This commit is contained in:
@@ -5,27 +5,33 @@ import { MailerAsyncOptions } from "@nestjs-modules/mailer/dist/interfaces/maile
|
||||
export function mailerConfig(): MailerAsyncOptions {
|
||||
return {
|
||||
inject: [ConfigService],
|
||||
useFactory: (configService: ConfigService) => ({
|
||||
transport: {
|
||||
host: configService.getOrThrow<string>("SMTP_HOST"),
|
||||
port: configService.getOrThrow<number>("SMTP_PORT"),
|
||||
secure: true,
|
||||
auth: {
|
||||
user: configService.getOrThrow<string>("SMTP_USER"),
|
||||
pass: configService.getOrThrow<string>("SMTP_PASS"),
|
||||
},
|
||||
},
|
||||
defaults: {
|
||||
from: configService.getOrThrow<string>("MAIL_FROM"),
|
||||
},
|
||||
useFactory: (configService: ConfigService) => {
|
||||
const port = Number(configService.getOrThrow<number>("SMTP_PORT"));
|
||||
// 465 = implicit TLS; 587 = STARTTLS (required by zone-mta behind Traefik)
|
||||
const secure = port === 465;
|
||||
|
||||
template: {
|
||||
dir: process.cwd() + "/src/modules/templates/email",
|
||||
adapter: new HandlebarsAdapter(),
|
||||
options: {
|
||||
strict: true,
|
||||
return {
|
||||
transport: {
|
||||
host: configService.getOrThrow<string>("SMTP_HOST"),
|
||||
port,
|
||||
secure,
|
||||
requireTLS: !secure,
|
||||
auth: {
|
||||
user: configService.getOrThrow<string>("SMTP_USER"),
|
||||
pass: configService.getOrThrow<string>("SMTP_PASS"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
defaults: {
|
||||
from: configService.getOrThrow<string>("MAIL_FROM"),
|
||||
},
|
||||
template: {
|
||||
dir: process.cwd() + "/src/modules/templates/email",
|
||||
adapter: new HandlebarsAdapter(),
|
||||
options: {
|
||||
strict: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ export class BlogsController {
|
||||
|
||||
@ApiOperation({ summary: "Get all comments for a blog (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_READ)
|
||||
@PermissionsDec(PermissionEnum.BLOG_COMMENTS_READ)
|
||||
@Get(":id/comments")
|
||||
getBlogCommentsForAdmin(@Param() paramDto: ParamDto) {
|
||||
return this.blogCommentService.getBlogCommentsForAdmin(paramDto.id);
|
||||
@@ -157,7 +157,7 @@ export class BlogsController {
|
||||
|
||||
@ApiOperation({ summary: "Get all comments for a blog (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_READ)
|
||||
@PermissionsDec(PermissionEnum.BLOG_COMMENTS_READ)
|
||||
@Get("comments")
|
||||
getAllCommentForAdmin(@Query() queryDto: BlogCommentQueryDto) {
|
||||
return this.blogCommentService.getAllCommentForAdmin(queryDto);
|
||||
@@ -165,7 +165,7 @@ export class BlogsController {
|
||||
|
||||
@ApiOperation({ summary: "Update the status of a comment (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_UPDATE)
|
||||
@PermissionsDec(PermissionEnum.BLOG_COMMENTS_UPDATE)
|
||||
@Patch("comments/:id/status")
|
||||
updateCommentStatus(@Param() paramDto: ParamDto, @Body() updateCommentStatusDto: UpdateCommentStatusDto) {
|
||||
return this.blogCommentService.updateCommentStatus(paramDto.id, updateCommentStatusDto);
|
||||
@@ -196,7 +196,7 @@ export class BlogsController {
|
||||
@ApiOperation({ summary: "Create a new category (admin route)" })
|
||||
@Post("categories")
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_CREATE)
|
||||
@PermissionsDec(PermissionEnum.BLOG_CATEGORIES_CREATE)
|
||||
createCategory(@Body() createCategoryDto: CreateBlogCategoryDto) {
|
||||
return this.blogsService.createCategory(createCategoryDto);
|
||||
}
|
||||
@@ -204,7 +204,7 @@ export class BlogsController {
|
||||
@ApiOperation({ summary: "Update a category (admin route)" })
|
||||
@Patch("categories/:id")
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_UPDATE)
|
||||
@PermissionsDec(PermissionEnum.BLOG_CATEGORIES_UPDATE)
|
||||
updateCategory(@Param() paramDto: ParamDto, @Body() updateCategoryDto: UpdateBlogCategoryDto) {
|
||||
return this.blogsService.updateCategory(paramDto.id, updateCategoryDto);
|
||||
}
|
||||
@@ -212,13 +212,13 @@ export class BlogsController {
|
||||
@ApiOperation({ summary: "Delete a category (admin route)" })
|
||||
@Delete("categories/:id")
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_DELETE)
|
||||
@PermissionsDec(PermissionEnum.BLOG_CATEGORIES_DELETE)
|
||||
deleteCategory(@Param() paramDto: ParamDto, @UserIpAndHeaders() userIpAndHeaders: IUserIpAndHeaders) {
|
||||
return this.blogsService.deleteCategory(paramDto.id, userIpAndHeaders);
|
||||
}
|
||||
|
||||
@ApiOperation({ summary: "toggle status of categories (admin route)" })
|
||||
@PermissionsDec(PermissionEnum.BLOGS_CREATE)
|
||||
@PermissionsDec(PermissionEnum.BLOG_CATEGORIES_UPDATE)
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Post("categories/toggle-status/:id")
|
||||
toggleCategoryStatus(@Param() paramDto: ParamDto, @UserIpAndHeaders() userIpAndHeaders: IUserIpAndHeaders) {
|
||||
|
||||
@@ -18,7 +18,7 @@ export class SlidersController {
|
||||
|
||||
@ApiOperation({ summary: "create slider (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_CREATE)
|
||||
@PermissionsDec(PermissionEnum.SLIDERS_CREATE)
|
||||
@Post()
|
||||
create(@Body() createSliderDto: CreateSliderDto) {
|
||||
return this.slidersService.create(createSliderDto);
|
||||
@@ -26,7 +26,7 @@ export class SlidersController {
|
||||
|
||||
@ApiOperation({ summary: "Get all sliders (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_READ)
|
||||
@PermissionsDec(PermissionEnum.SLIDERS_READ)
|
||||
@Get()
|
||||
getSlidersList(@Query() queryDto: PaginationDto) {
|
||||
return this.slidersService.getSlidersList(queryDto);
|
||||
@@ -34,7 +34,7 @@ export class SlidersController {
|
||||
|
||||
@ApiOperation({ summary: "Get a slider by id (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_READ)
|
||||
@PermissionsDec(PermissionEnum.SLIDERS_READ)
|
||||
@Get(":id")
|
||||
getSliderById(@Param() paramDto: ParamDto) {
|
||||
return this.slidersService.getSliderById(paramDto.id);
|
||||
@@ -42,7 +42,7 @@ export class SlidersController {
|
||||
|
||||
@ApiOperation({ summary: "Update a slider (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_UPDATE)
|
||||
@PermissionsDec(PermissionEnum.SLIDERS_UPDATE)
|
||||
@Patch(":id")
|
||||
update(@Param() paramDto: ParamDto, @Body() updateSliderDto: UpdateSliderDto) {
|
||||
return this.slidersService.update(paramDto.id, updateSliderDto);
|
||||
@@ -50,7 +50,7 @@ export class SlidersController {
|
||||
|
||||
@ApiOperation({ summary: "Delete a slider (admin route)" })
|
||||
@AdminRoute()
|
||||
@PermissionsDec(PermissionEnum.BLOGS_DELETE)
|
||||
@PermissionsDec(PermissionEnum.SLIDERS_DELETE)
|
||||
@Delete(":id")
|
||||
remove(@Param() paramDto: ParamDto) {
|
||||
return this.slidersService.remove(paramDto.id);
|
||||
|
||||
@@ -87,6 +87,21 @@ export const permissionMeta: Record<PermissionEnum, PermissionMeta> = {
|
||||
[PermissionEnum.BLOGS_UPDATE]: { title: "ویرایش بلاگها", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOGS_DELETE]: { title: "حذف بلاگها", group: PermissionGroupEnum.CONTENT },
|
||||
|
||||
[PermissionEnum.BLOG_CATEGORIES_CREATE]: { title: "ایجاد دستهبندی بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOG_CATEGORIES_READ]: { title: "مشاهده دستهبندی بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOG_CATEGORIES_UPDATE]: { title: "ویرایش دستهبندی بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOG_CATEGORIES_DELETE]: { title: "حذف دستهبندی بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
|
||||
[PermissionEnum.BLOG_COMMENTS_CREATE]: { title: "ایجاد نظرات بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOG_COMMENTS_READ]: { title: "مشاهده نظرات بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOG_COMMENTS_UPDATE]: { title: "ویرایش نظرات بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.BLOG_COMMENTS_DELETE]: { title: "حذف نظرات بلاگ", group: PermissionGroupEnum.CONTENT },
|
||||
|
||||
[PermissionEnum.SLIDERS_CREATE]: { title: "ایجاد اسلایدر", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.SLIDERS_READ]: { title: "مشاهده اسلایدر", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.SLIDERS_UPDATE]: { title: "ویرایش اسلایدر", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.SLIDERS_DELETE]: { title: "حذف اسلایدر", group: PermissionGroupEnum.CONTENT },
|
||||
|
||||
[PermissionEnum.LEARNINGS_CREATE]: { title: "ایجاد آموزشها", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.LEARNINGS_READ]: { title: "مشاهده آموزشها", group: PermissionGroupEnum.CONTENT },
|
||||
[PermissionEnum.LEARNINGS_UPDATE]: { title: "ویرایش آموزشها", group: PermissionGroupEnum.CONTENT },
|
||||
|
||||
@@ -95,6 +95,24 @@ export enum PermissionEnum {
|
||||
BLOGS_UPDATE = "blogs_update",
|
||||
BLOGS_DELETE = "blogs_delete",
|
||||
|
||||
// blog_categories
|
||||
BLOG_CATEGORIES_CREATE = "blog_categories_create",
|
||||
BLOG_CATEGORIES_READ = "blog_categories_read",
|
||||
BLOG_CATEGORIES_UPDATE = "blog_categories_update",
|
||||
BLOG_CATEGORIES_DELETE = "blog_categories_delete",
|
||||
|
||||
// blog_comments
|
||||
BLOG_COMMENTS_CREATE = "blog_comments_create",
|
||||
BLOG_COMMENTS_READ = "blog_comments_read",
|
||||
BLOG_COMMENTS_UPDATE = "blog_comments_update",
|
||||
BLOG_COMMENTS_DELETE = "blog_comments_delete",
|
||||
|
||||
// sliders
|
||||
SLIDERS_CREATE = "sliders_create",
|
||||
SLIDERS_READ = "sliders_read",
|
||||
SLIDERS_UPDATE = "sliders_update",
|
||||
SLIDERS_DELETE = "sliders_delete",
|
||||
|
||||
// learnings
|
||||
LEARNINGS_CREATE = "learnings_create",
|
||||
LEARNINGS_READ = "learnings_read",
|
||||
|
||||
Reference in New Issue
Block a user