otp expire crone

This commit is contained in:
2026-01-20 20:36:22 +03:30
parent 6ba36ca130
commit ca8d6c473d
4 changed files with 147 additions and 121 deletions
+2 -2
View File
@@ -4,7 +4,7 @@
*/
export enum Permission {
MANAGE_productS = 'manage_products',
MANAGE_PRODUCTS = 'manage_products',
MANAGE_CATEGORIES = 'manage_categories',
// Order Management
@@ -38,7 +38,7 @@ export enum Permission {
* Maps permission names to their Farsi titles
*/
export const PermissionTitles: Record<Permission, string> = {
[Permission.MANAGE_productS]: 'مدیریت غذاها',
[Permission.MANAGE_PRODUCTS]: 'مدیریت غذاها',
[Permission.MANAGE_CATEGORIES]: 'مدیریت دسته‌بندی‌ها',
[Permission.MANAGE_ORDERS]: 'مدیریت سفارشات',
[Permission.MANAGE_ADMINS]: 'مدیریت مدیران',
+2 -1
View File
@@ -14,6 +14,7 @@ import { NotificationsModule } from '../notification/notifications.module';
import { OtpRepository } from './repository/otp.repository';
import { OtpService } from './services/otp.service';
import { Otp } from './entities/otp.entity';
import { AuthCrone } from './crone/auth.crone';
@Module({
imports: [
@@ -40,7 +41,7 @@ import { Otp } from './entities/otp.entity';
],
controllers: [AuthController],
providers: [AuthService, TokensService, AdminAuthGuard, OtpRepository, OtpService],
providers: [AuthService, TokensService, AdminAuthGuard, OtpRepository, OtpService, AuthCrone],
exports: [AdminAuthGuard],
})
export class AuthModule { }
+25
View File
@@ -0,0 +1,25 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { OtpRepository } from '../repository/otp.repository';
@Injectable()
export class AuthCrone {
private readonly logger = new Logger(AuthCrone.name);
constructor(
private readonly otpRepository: OtpRepository
) { }
@Cron('*/59 * * * *', {
name: 'completeOldDeliveredOrders',
timeZone: 'UTC',
})
async removeExpireOtp() {
this.logger.log("Delete expire otps")
await this.otpRepository.nativeDelete({
expiresAt: { $lt: new Date() }
})
return true
}
}
@@ -43,7 +43,7 @@ export class productController {
@Post('admin/category')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Create a new category' })
@ApiBody({ type: CreateCategoryDto })
createCategory(@Body() createproductDto: CreateCategoryDto) {
@@ -53,7 +53,7 @@ export class productController {
@Get('admin/category')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Get a paginated list of Categories' })
@ApiQuery({ name: 'page', required: false, type: Number })
@ApiQuery({ name: 'limit', required: false, type: Number })
@@ -70,7 +70,7 @@ export class productController {
@Get('admin/category/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Get a category by id' })
@ApiParam({ name: 'id', required: true })
findCategoryById(@Param('id') id: string) {
@@ -80,7 +80,7 @@ export class productController {
@Patch('admin/category/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Update a category' })
@ApiParam({ name: 'id', required: true })
@ApiBody({ type: UpdateCategoryDto })
@@ -91,7 +91,7 @@ export class productController {
@Delete('admin/category/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Delete (soft) a category' })
@ApiParam({ name: 'id', required: true })
removeCategory(@Param('id') id: string,) {
@@ -102,7 +102,7 @@ export class productController {
@Post('admin/product')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Create a new product' })
@ApiBody({ type: CreateproductDto })
create(@Body() createproductDto: CreateproductDto) {
@@ -112,7 +112,7 @@ export class productController {
@Get('admin/products')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Get a paginated list of products' })
@ApiQuery({ name: 'page', required: false, type: Number })
@ApiQuery({ name: 'limit', required: false, type: Number })
@@ -129,7 +129,7 @@ export class productController {
@Get('admin/products/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Get a product by id' })
@ApiParam({ name: 'id', required: true })
findById(@Param('id') id: string,) {
@@ -139,7 +139,7 @@ export class productController {
@Patch('admin/products/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Update a product' })
@ApiParam({ name: 'id', required: true })
@ApiBody({ type: UpdateproductDto })
@@ -150,7 +150,7 @@ export class productController {
@Delete('admin/products/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Delete (soft) a product' })
@ApiParam({ name: 'id', required: true })
remove(@Param('id') id: string,) {
@@ -163,7 +163,7 @@ export class productController {
@Post('admin/product/:id/attribute')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Create a new attribute' })
@ApiParam({ name: 'id', required: true })
@ApiBody({ type: CreateAttributeDto })
@@ -174,7 +174,7 @@ export class productController {
@Get('admin/products/:id/attributes')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiParam({ name: 'id', required: true })
@ApiOperation({ summary: 'Get list of product attributes' })
async findProductAttributes(@Param('id') id: string) {
@@ -184,7 +184,7 @@ export class productController {
@Get('admin/products/attributes/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Get a attribute by id' })
@ApiParam({ name: 'id', required: true })
findAttributeById(@Param('id') id: string) {
@@ -194,7 +194,7 @@ export class productController {
@Patch('admin/products/attributes/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Update a attribute' })
@ApiParam({ name: 'id', required: true })
@ApiBody({ type: UpdateAttributeDto })
@@ -205,7 +205,7 @@ export class productController {
@Delete('admin/products/attributes/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Delete (soft) a attribute' })
@ApiParam({ name: 'id', required: true })
removeAttribute(@Param('id') id: string,) {
@@ -216,7 +216,7 @@ export class productController {
@Post('admin/product/attribute/:id/value')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Create a new attribute value' })
@ApiParam({ name: 'id', required: true })
@ApiBody({ type: CreateAttributeValueDto })
@@ -227,7 +227,7 @@ export class productController {
@Get('admin/products/attributes/:id/values')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiParam({ name: 'id', required: true })
@ApiOperation({ summary: 'Get list of attribute values' })
async findtAttributeValue(@Param('id') id: string) {
@@ -237,7 +237,7 @@ export class productController {
@Get('admin/products/attributes/value/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Get a attribute value by id' })
@ApiParam({ name: 'id', required: true })
findAttributeValueById(@Param('id') id: string) {
@@ -247,7 +247,7 @@ export class productController {
@Patch('admin/products/attributes/value/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Update a attribute value' })
@ApiParam({ name: 'id', required: true })
@ApiBody({ type: UpdateAttributeValueDto })
@@ -258,7 +258,7 @@ export class productController {
@Delete('admin/products/attributes/value/:id')
// @UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_productS)
@Permissions(Permission.MANAGE_PRODUCTS)
@ApiOperation({ summary: 'Delete (soft) a attribute value' })
@ApiParam({ name: 'id', required: true })
removeAttributeValue(@Param('id') id: string,) {