From 88f66f1c1cda15150e883e7fdf87eb174c15761f Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 31 Mar 2025 13:49:57 +0200 Subject: [PATCH] refactor(nestjs): auth module --- .env.example | 3 + packages/server-nest/.env.example | 3 + .../server-nest/src/common/config/index.ts | 2 + packages/server-nest/src/common/config/jwt.ts | 5 ++ .../modules/Accounts/Accounts.controller.ts | 2 +- .../src/modules/Auth/Auth.controller.ts | 24 +++++-- .../src/modules/Auth/Auth.interfaces.ts | 6 ++ .../src/modules/Auth/Auth.module.ts | 23 +++++-- .../modules/Auth/AuthApplication.sevice.ts | 4 +- .../src/modules/Auth/AuthService.ts | 22 ------- .../src/modules/Auth/Jwt.strategy.ts | 19 ------ .../Auth/commands/AuthSignin.service.ts | 63 ++++++++++++++++--- .../{Jwt.guard.ts => guards/Jwt.local.ts} | 1 + .../src/modules/Auth/guards/Local.guard.ts | 5 ++ .../modules/Auth/strategies/Jwt.strategy.ts | 24 +++++++ .../modules/Auth/strategies/Local.strategy.ts | 21 +++++++ .../modules/BankRules/BankRules.controller.ts | 2 +- .../BankingTransactions.controller.ts | 7 +-- .../src/modules/Bills/Bills.controller.ts | 2 +- .../src/modules/Bills/dtos/Bill.dto.ts | 3 +- .../modules/Branches/Branches.controller.ts | 2 +- .../CreditNotes/CreditNotes.controller.ts | 2 +- .../modules/Customers/Customers.controller.ts | 2 +- .../modules/Expenses/Expenses.controller.ts | 2 +- .../APAgingSummary.controller.ts | 2 +- .../ARAgingSummary.controller.ts | 2 +- .../CashFlowStatement/Cashflow.controller.ts | 2 +- .../CustomerBalanceSummary.controller.ts | 2 +- .../GeneralLedger/GeneralLedger.controller.ts | 2 +- .../InventoryItemDetails.controller.ts | 2 +- .../InventoryValuation.controller.ts | 2 +- .../JournalSheet/JournalSheet.controller.ts | 2 +- .../ProfitLossSheet.controller.ts | 2 +- .../PurchasesByItems.controller.ts | 2 +- .../SalesTaxLiabilitySummary.controller.ts | 2 +- .../TransactionsByCustomer.controller.ts | 2 +- .../TransactionsByReference.controller.ts | 2 +- .../TransactionsByVendor.controller.ts | 2 +- .../TrialBalanceSheet.controller.ts | 20 ++---- .../VendorBalanceSummary.controller.ts | 2 +- .../InventoryAdjustments.controller.ts | 2 +- .../ItemCategories/ItemCategory.controller.ts | 2 +- .../src/modules/Items/Item.controller.ts | 5 +- .../ManualJournals.controller.ts | 9 ++- .../Organization/Organization.controller.ts | 2 +- .../PaymentsReceived.controller.ts | 8 ++- .../PaymentServices.controller.ts | 2 +- .../PdfTemplate/PdfTemplates.controller.ts | 2 +- .../src/modules/Roles/Roles.controller.ts | 2 +- .../SaleEstimates/SaleEstimates.controller.ts | 2 +- .../SaleInvoices/SaleInvoices.controller.ts | 2 +- .../SaleReceipts/SaleReceipts.controller.ts | 2 +- .../modules/Settings/Settings.controller.ts | 2 +- .../interceptors/Subscription.guard.ts | 24 +++---- .../src/modules/System/models/SystemUser.ts | 14 ++++- .../modules/TaxRates/TaxRate.controller.ts | 2 +- .../TransactionsLocking.controller.ts | 2 +- .../VendorCredit/VendorCredits.controller.ts | 2 +- .../VendorCreditsRefund.controller.ts | 4 +- .../src/modules/Vendors/Vendors.controller.ts | 2 +- .../Warehouses/Warehouses.controller.ts | 2 +- .../WarehouseTransfers.controller.ts | 2 +- 62 files changed, 251 insertions(+), 144 deletions(-) create mode 100644 packages/server-nest/src/common/config/jwt.ts delete mode 100644 packages/server-nest/src/modules/Auth/AuthService.ts delete mode 100644 packages/server-nest/src/modules/Auth/Jwt.strategy.ts rename packages/server-nest/src/modules/Auth/{Jwt.guard.ts => guards/Jwt.local.ts} (99%) create mode 100644 packages/server-nest/src/modules/Auth/guards/Local.guard.ts create mode 100644 packages/server-nest/src/modules/Auth/strategies/Jwt.strategy.ts create mode 100644 packages/server-nest/src/modules/Auth/strategies/Local.strategy.ts diff --git a/.env.example b/.env.example index 55950fb05..30101827f 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,6 @@ +# App +APP_JWT_SECRET=123123 + # Mail MAIL_HOST= MAIL_USERNAME= diff --git a/packages/server-nest/.env.example b/packages/server-nest/.env.example index 55950fb05..30101827f 100644 --- a/packages/server-nest/.env.example +++ b/packages/server-nest/.env.example @@ -1,3 +1,6 @@ +# App +APP_JWT_SECRET=123123 + # Mail MAIL_HOST= MAIL_USERNAME= diff --git a/packages/server-nest/src/common/config/index.ts b/packages/server-nest/src/common/config/index.ts index 68fb49b4c..e95e56076 100644 --- a/packages/server-nest/src/common/config/index.ts +++ b/packages/server-nest/src/common/config/index.ts @@ -10,6 +10,7 @@ import posthog from './posthog'; import stripePayment from './stripe-payment'; import signupConfirmation from './signup-confirmation'; import signupRestrictions from './signup-restrictions'; +import jwt from './jwt'; export const config = [ systemDatabase, @@ -24,4 +25,5 @@ export const config = [ stripePayment, signupConfirmation, signupRestrictions, + jwt, ]; diff --git a/packages/server-nest/src/common/config/jwt.ts b/packages/server-nest/src/common/config/jwt.ts new file mode 100644 index 000000000..942f1e16b --- /dev/null +++ b/packages/server-nest/src/common/config/jwt.ts @@ -0,0 +1,5 @@ +import { registerAs } from '@nestjs/config'; + +export default registerAs('jwt', () => ({ + secret: process.env.APP_JWT_SECRET || '123123', +})); diff --git a/packages/server-nest/src/modules/Accounts/Accounts.controller.ts b/packages/server-nest/src/modules/Accounts/Accounts.controller.ts index eef64a5bb..e18f25de8 100644 --- a/packages/server-nest/src/modules/Accounts/Accounts.controller.ts +++ b/packages/server-nest/src/modules/Accounts/Accounts.controller.ts @@ -11,7 +11,7 @@ import { import { AccountsApplication } from './AccountsApplication.service'; import { CreateAccountDTO } from './CreateAccount.dto'; import { EditAccountDTO } from './EditAccount.dto'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { IAccountsFilter, IAccountsTransactionsFilter } from './Accounts.types'; import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; diff --git a/packages/server-nest/src/modules/Auth/Auth.controller.ts b/packages/server-nest/src/modules/Auth/Auth.controller.ts index 7efb51cda..296906ced 100644 --- a/packages/server-nest/src/modules/Auth/Auth.controller.ts +++ b/packages/server-nest/src/modules/Auth/Auth.controller.ts @@ -1,21 +1,37 @@ -import { Body, Controller, Param, Post, Request } from '@nestjs/common'; +// @ts-nocheck +import { + Body, + Controller, + Param, + Post, + Request, + UseGuards, +} from '@nestjs/common'; import { ApiTags, ApiOperation, ApiBody, ApiParam } from '@nestjs/swagger'; -import { PublicRoute } from './Jwt.guard'; +import { JwtAuthGuard, PublicRoute } from './guards/Jwt.local'; import { AuthenticationApplication } from './AuthApplication.sevice'; import { AuthSignupDto } from './dtos/AuthSignup.dto'; import { AuthSigninDto } from './dtos/AuthSignin.dto'; +import { LocalAuthGuard } from './guards/Local.guard'; +import { JwtService } from '@nestjs/jwt'; +import { AuthSigninService } from './commands/AuthSignin.service'; @ApiTags('Auth') @Controller('/auth') @PublicRoute() export class AuthController { - constructor(private readonly authApp: AuthenticationApplication) {} + constructor( + private readonly authApp: AuthenticationApplication, + private readonly authSignin: AuthSigninService, + ) {} @Post('/signin') + @UseGuards(LocalAuthGuard) @ApiOperation({ summary: 'Sign in a user' }) @ApiBody({ type: AuthSigninDto }) signin(@Request() req: Request, @Body() signinDto: AuthSigninDto) { - return this.authApp.signIn(signinDto); + const { user } = req; + return { access_token: this.authSignin.signToken(user) }; } @Post('/signup') diff --git a/packages/server-nest/src/modules/Auth/Auth.interfaces.ts b/packages/server-nest/src/modules/Auth/Auth.interfaces.ts index 65cc917d5..85193d13d 100644 --- a/packages/server-nest/src/modules/Auth/Auth.interfaces.ts +++ b/packages/server-nest/src/modules/Auth/Auth.interfaces.ts @@ -3,6 +3,12 @@ import { SystemUser } from '../System/models/SystemUser'; import { TenantModel } from '../System/models/TenantModel'; import { AuthSignupDto } from './dtos/AuthSignup.dto'; +export interface JwtPayload { + sub: string; + iat: number; + exp: number; +} + export interface IAuthSignedInEventPayload {} export interface IAuthSigningInEventPayload {} export interface IAuthSignInPOJO {} diff --git a/packages/server-nest/src/modules/Auth/Auth.module.ts b/packages/server-nest/src/modules/Auth/Auth.module.ts index 464fc5a00..431dfc3b2 100644 --- a/packages/server-nest/src/modules/Auth/Auth.module.ts +++ b/packages/server-nest/src/modules/Auth/Auth.module.ts @@ -1,8 +1,7 @@ import { Module } from '@nestjs/common'; -import { AuthService } from './AuthService'; import { AuthController } from './Auth.controller'; import { JwtModule } from '@nestjs/jwt'; -import { JwtStrategy } from './Jwt.strategy'; +import { JwtStrategy } from './strategies/Jwt.strategy'; import { AuthenticationApplication } from './AuthApplication.sevice'; import { AuthSendResetPasswordService } from './commands/AuthSendResetPassword.service'; import { AuthResetPasswordService } from './commands/AuthResetPassword.service'; @@ -14,22 +13,32 @@ import { RegisterTenancyModel } from '../Tenancy/TenancyModels/Tenancy.module'; import { PasswordReset } from './models/PasswordReset'; import { TenantDBManagerModule } from '../TenantDBManager/TenantDBManager.module'; import { AuthenticationMailMesssages } from './AuthMailMessages.esrvice'; +import { LocalStrategy } from './strategies/Local.strategy'; +import { PassportModule } from '@nestjs/passport'; +import { APP_GUARD } from '@nestjs/core'; +import { JwtAuthGuard } from './guards/Jwt.local'; const models = [RegisterTenancyModel(PasswordReset)]; @Module({ controllers: [AuthController], imports: [ + PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.register({ - secret: 'asdfasdfasdf', - signOptions: { expiresIn: '60s' }, + signOptions: { + expiresIn: '1d', + algorithm: 'HS384', + }, + verifyOptions: { + algorithms: ['HS384'], + }, }), TenantDBManagerModule, ...models, ], exports: [...models], providers: [ - AuthService, + LocalStrategy, JwtStrategy, AuthenticationApplication, AuthSendResetPasswordService, @@ -39,6 +48,10 @@ const models = [RegisterTenancyModel(PasswordReset)]; AuthSignupService, AuthSigninService, AuthenticationMailMesssages, + { + provide: APP_GUARD, + useClass: JwtAuthGuard, + }, ], }) export class AuthModule {} diff --git a/packages/server-nest/src/modules/Auth/AuthApplication.sevice.ts b/packages/server-nest/src/modules/Auth/AuthApplication.sevice.ts index 31830f295..6bec0836d 100644 --- a/packages/server-nest/src/modules/Auth/AuthApplication.sevice.ts +++ b/packages/server-nest/src/modules/Auth/AuthApplication.sevice.ts @@ -26,8 +26,8 @@ export class AuthenticationApplication { * @param {string} email - Email address. * @param {string} password - Password. */ - public async signIn(signinDto: AuthSigninDto) { - return this.authSigninService.signIn(signinDto); + public async signIn(email: string, password: string) { + return this.authSigninService.signin(email, password); } /** diff --git a/packages/server-nest/src/modules/Auth/AuthService.ts b/packages/server-nest/src/modules/Auth/AuthService.ts deleted file mode 100644 index 56b6e8d17..000000000 --- a/packages/server-nest/src/modules/Auth/AuthService.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Inject, Injectable } from '@nestjs/common'; -import { SystemUser } from '@/modules/System/models/SystemUser'; - -@Injectable() -export class AuthService { - constructor( - @Inject(SystemUser.name) - private readonly systemUserModel: typeof SystemUser, - ) {} - - async validateUser(username: string, pass: string): Promise { - const user = await this.systemUserModel - .query() - .findOne({ email: username }); - - if (user && user.password === pass) { - const { password, ...result } = user; - return result; - } - return null; - } -} diff --git a/packages/server-nest/src/modules/Auth/Jwt.strategy.ts b/packages/server-nest/src/modules/Auth/Jwt.strategy.ts deleted file mode 100644 index e7b6e0b77..000000000 --- a/packages/server-nest/src/modules/Auth/Jwt.strategy.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ExtractJwt, Strategy } from 'passport-jwt'; -import { PassportStrategy } from '@nestjs/passport'; -import { Injectable } from '@nestjs/common'; -import { jwtConstants } from './Auth.constants'; - -@Injectable() -export class JwtStrategy extends PassportStrategy(Strategy) { - constructor() { - super({ - jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), - ignoreExpiration: false, - secretOrKey: jwtConstants.secret, - }); - } - - async validate(payload: any) { - return { userId: payload.sub, username: payload.username }; - } -} diff --git a/packages/server-nest/src/modules/Auth/commands/AuthSignin.service.ts b/packages/server-nest/src/modules/Auth/commands/AuthSignin.service.ts index 81e360cb4..c6cec91bb 100644 --- a/packages/server-nest/src/modules/Auth/commands/AuthSignin.service.ts +++ b/packages/server-nest/src/modules/Auth/commands/AuthSignin.service.ts @@ -1,22 +1,67 @@ -import { SystemUser } from '@/modules/System/models/SystemUser'; -import { Inject, Injectable } from '@nestjs/common'; +import { Inject, Injectable, UnauthorizedException } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; -import { AuthSigninDto } from '../dtos/AuthSignin.dto'; +import { SystemUser } from '@/modules/System/models/SystemUser'; +import { ModelObject } from 'objection'; +import { JwtPayload } from '../Auth.interfaces'; @Injectable() export class AuthSigninService { constructor( - private readonly jwtService: JwtService, - @Inject(SystemUser.name) private readonly systemUserModel: typeof SystemUser, + private readonly jwtService: JwtService, ) {} - private async validate() {} + /** + * Validates the given email and password. + * @param {string} email - Signin email address. + * @param {string} password - Signin password. + * @returns {Promise>} + */ + async signin( + email: string, + password: string, + ): Promise> { + let user: SystemUser; - private getUserByEmail(email: string) { - return this.systemUserModel.query().findOne({ email }); + try { + user = await this.systemUserModel + .query() + .findOne({ email }) + .throwIfNotFound(); + } catch (err) { + throw new UnauthorizedException( + `There isn't any user with email: ${email}`, + ); + } + if (!(await user.checkPassword(password))) { + throw new UnauthorizedException( + `Wrong password for user with email: ${email}`, + ); + } + return user; } - public async signIn(signinDto: AuthSigninDto) {} + async verifyPayload(payload: JwtPayload): Promise { + let user: SystemUser; + + try { + user = await this.systemUserModel + .query() + .findOne({ email: payload.sub }) + .throwIfNotFound(); + } catch (error) { + throw new UnauthorizedException( + `There isn't any user with email: ${payload.sub}`, + ); + } + return payload; + } + + signToken(user: SystemUser): string { + const payload = { + sub: user.email, + }; + return this.jwtService.sign(payload); + } } diff --git a/packages/server-nest/src/modules/Auth/Jwt.guard.ts b/packages/server-nest/src/modules/Auth/guards/Jwt.local.ts similarity index 99% rename from packages/server-nest/src/modules/Auth/Jwt.guard.ts rename to packages/server-nest/src/modules/Auth/guards/Jwt.local.ts index 2ea9918bc..b9e008f0b 100644 --- a/packages/server-nest/src/modules/Auth/Jwt.guard.ts +++ b/packages/server-nest/src/modules/Auth/guards/Jwt.local.ts @@ -19,6 +19,7 @@ export class JwtAuthGuard extends AuthGuard('jwt') { ) { super(); } + canActivate(context: ExecutionContext) { const isPublic = this.reflector.getAllAndOverride(IS_PUBLIC_KEY, [ context.getHandler(), diff --git a/packages/server-nest/src/modules/Auth/guards/Local.guard.ts b/packages/server-nest/src/modules/Auth/guards/Local.guard.ts new file mode 100644 index 000000000..a4162de48 --- /dev/null +++ b/packages/server-nest/src/modules/Auth/guards/Local.guard.ts @@ -0,0 +1,5 @@ +import { Injectable, ExecutionContext } from '@nestjs/common'; +import { AuthGuard } from '@nestjs/passport'; + +@Injectable() +export class LocalAuthGuard extends AuthGuard('local') {} diff --git a/packages/server-nest/src/modules/Auth/strategies/Jwt.strategy.ts b/packages/server-nest/src/modules/Auth/strategies/Jwt.strategy.ts new file mode 100644 index 000000000..4eba5f515 --- /dev/null +++ b/packages/server-nest/src/modules/Auth/strategies/Jwt.strategy.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@nestjs/common'; +import { PassportStrategy } from '@nestjs/passport'; +import { ExtractJwt, Strategy } from 'passport-jwt'; +import { AuthSigninService } from '../commands/AuthSignin.service'; +import { JwtPayload } from '../Auth.interfaces'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { + constructor( + private readonly authSigninService: AuthSigninService, + private readonly configService: ConfigService, + ) { + super({ + jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), + ignoreExpiration: false, + secretOrKey: configService.get('jwt.secret'), + }); + } + + validate(payload: JwtPayload) { + return this.authSigninService.verifyPayload(payload); + } +} diff --git a/packages/server-nest/src/modules/Auth/strategies/Local.strategy.ts b/packages/server-nest/src/modules/Auth/strategies/Local.strategy.ts new file mode 100644 index 000000000..2245dbffa --- /dev/null +++ b/packages/server-nest/src/modules/Auth/strategies/Local.strategy.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@nestjs/common'; +import { PassportStrategy } from '@nestjs/passport'; +import { Strategy } from 'passport-local'; +import { AuthSigninService } from '../commands/AuthSignin.service'; +import { ModelObject } from 'objection'; +import { SystemUser } from '../../System/models/SystemUser'; + +@Injectable() +export class LocalStrategy extends PassportStrategy(Strategy, 'local') { + constructor(private readonly authSigninService: AuthSigninService) { + super({ + usernameField: 'email', + passReqToCallback: false, + session: false, + }); + } + + validate(email: string, password: string): Promise> { + return this.authSigninService.signin(email, password); + } +} diff --git a/packages/server-nest/src/modules/BankRules/BankRules.controller.ts b/packages/server-nest/src/modules/BankRules/BankRules.controller.ts index 202c2b7f8..0fe3e8027 100644 --- a/packages/server-nest/src/modules/BankRules/BankRules.controller.ts +++ b/packages/server-nest/src/modules/BankRules/BankRules.controller.ts @@ -10,7 +10,7 @@ import { } from '@nestjs/common'; import { BankRulesApplication } from './BankRulesApplication'; import { ICreateBankRuleDTO, IEditBankRuleDTO } from './types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { BankRule } from './models/BankRule'; import { CreateBankRuleDto } from './dtos/BankRule.dto'; import { EditBankRuleDto } from './dtos/BankRule.dto'; diff --git a/packages/server-nest/src/modules/BankingTransactions/BankingTransactions.controller.ts b/packages/server-nest/src/modules/BankingTransactions/BankingTransactions.controller.ts index 4df126138..bb5b6cbb3 100644 --- a/packages/server-nest/src/modules/BankingTransactions/BankingTransactions.controller.ts +++ b/packages/server-nest/src/modules/BankingTransactions/BankingTransactions.controller.ts @@ -8,11 +8,8 @@ import { Query, } from '@nestjs/common'; import { BankingTransactionsApplication } from './BankingTransactionsApplication.service'; -import { - IBankAccountsFilter, - ICashflowNewCommandDTO, -} from './types/BankingTransactions.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { IBankAccountsFilter } from './types/BankingTransactions.types'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiTags } from '@nestjs/swagger'; import { CreateBankTransactionDto } from './dtos/CreateBankTransaction.dto'; diff --git a/packages/server-nest/src/modules/Bills/Bills.controller.ts b/packages/server-nest/src/modules/Bills/Bills.controller.ts index 5abfb52a6..07af52370 100644 --- a/packages/server-nest/src/modules/Bills/Bills.controller.ts +++ b/packages/server-nest/src/modules/Bills/Bills.controller.ts @@ -11,7 +11,7 @@ import { } from '@nestjs/common'; import { BillsApplication } from './Bills.application'; import { IBillsFilter } from './Bills.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { CreateBillDto, EditBillDto } from './dtos/Bill.dto'; @Controller('bills') diff --git a/packages/server-nest/src/modules/Bills/dtos/Bill.dto.ts b/packages/server-nest/src/modules/Bills/dtos/Bill.dto.ts index a1f70ee9c..b3c7267c8 100644 --- a/packages/server-nest/src/modules/Bills/dtos/Bill.dto.ts +++ b/packages/server-nest/src/modules/Bills/dtos/Bill.dto.ts @@ -1,6 +1,7 @@ import { ItemEntryDto } from '@/modules/TransactionItemEntry/dto/ItemEntry.dto'; import { Type } from 'class-transformer'; import { + ArrayMinSize, IsArray, IsBoolean, IsDate, @@ -81,7 +82,7 @@ export class CommandBillDto { @IsArray() @ValidateNested({ each: true }) @Type(() => BillEntryDto) - @MinLength(1) + @ArrayMinSize(1) entries: BillEntryDto[]; @IsOptional() diff --git a/packages/server-nest/src/modules/Branches/Branches.controller.ts b/packages/server-nest/src/modules/Branches/Branches.controller.ts index ff99595b1..4d9dc11a1 100644 --- a/packages/server-nest/src/modules/Branches/Branches.controller.ts +++ b/packages/server-nest/src/modules/Branches/Branches.controller.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import { BranchesApplication } from './BranchesApplication.service'; import { CreateBranchDto, EditBranchDto } from './dtos/Branch.dto'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('branches') diff --git a/packages/server-nest/src/modules/CreditNotes/CreditNotes.controller.ts b/packages/server-nest/src/modules/CreditNotes/CreditNotes.controller.ts index ae9abd6c8..370beb717 100644 --- a/packages/server-nest/src/modules/CreditNotes/CreditNotes.controller.ts +++ b/packages/server-nest/src/modules/CreditNotes/CreditNotes.controller.ts @@ -10,7 +10,7 @@ import { } from '@nestjs/common'; import { CreditNoteApplication } from './CreditNoteApplication.service'; import { ICreditNotesQueryDTO } from './types/CreditNotes.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiTags } from '@nestjs/swagger'; import { CreateCreditNoteDto, EditCreditNoteDto } from './dtos/CreditNote.dto'; diff --git a/packages/server-nest/src/modules/Customers/Customers.controller.ts b/packages/server-nest/src/modules/Customers/Customers.controller.ts index af9c0b6e5..7a26dcf49 100644 --- a/packages/server-nest/src/modules/Customers/Customers.controller.ts +++ b/packages/server-nest/src/modules/Customers/Customers.controller.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import { CustomersApplication } from './CustomersApplication.service'; import { ICustomerOpeningBalanceEditDTO } from './types/Customers.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateCustomerDto } from './dtos/CreateCustomer.dto'; import { EditCustomerDto } from './dtos/EditCustomer.dto'; diff --git a/packages/server-nest/src/modules/Expenses/Expenses.controller.ts b/packages/server-nest/src/modules/Expenses/Expenses.controller.ts index 49d7e3521..c180a8938 100644 --- a/packages/server-nest/src/modules/Expenses/Expenses.controller.ts +++ b/packages/server-nest/src/modules/Expenses/Expenses.controller.ts @@ -9,7 +9,7 @@ import { Query, } from '@nestjs/common'; import { ExpensesApplication } from './ExpensesApplication.service'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { IExpensesFilter } from './Expenses.types'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateExpenseDto, EditExpenseDto } from './dtos/Expense.dto'; diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/APAgingSummary/APAgingSummary.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/APAgingSummary/APAgingSummary.controller.ts index bb808844e..9d5cbdd1b 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/APAgingSummary/APAgingSummary.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/APAgingSummary/APAgingSummary.controller.ts @@ -4,7 +4,7 @@ import { IAPAgingSummaryQuery } from './APAgingSummary.types'; import { AcceptType } from '@/constants/accept-type'; import { Response } from 'express'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('reports/payable-aging-summary') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/ARAgingSummary/ARAgingSummary.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/ARAgingSummary/ARAgingSummary.controller.ts index 85b4dd5b9..8711857ed 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/ARAgingSummary/ARAgingSummary.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/ARAgingSummary/ARAgingSummary.controller.ts @@ -4,7 +4,7 @@ import { Query, Res } from '@nestjs/common'; import { ARAgingSummaryApplication } from './ARAgingSummaryApplication'; import { AcceptType } from '@/constants/accept-type'; import { Response } from 'express'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; @Controller('reports/receivable-aging-summary') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/CashFlowStatement/Cashflow.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/CashFlowStatement/Cashflow.controller.ts index 72f7f8378..488c8cfe1 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/CashFlowStatement/Cashflow.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/CashFlowStatement/Cashflow.controller.ts @@ -3,7 +3,7 @@ import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { ICashFlowStatementQuery } from './Cashflow.types'; import { AcceptType } from '@/constants/accept-type'; import { CashflowSheetApplication } from './CashflowSheetApplication'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('reports/cashflow-statement') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/CustomerBalanceSummary/CustomerBalanceSummary.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/CustomerBalanceSummary/CustomerBalanceSummary.controller.ts index e428be789..9ecadfbbe 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/CustomerBalanceSummary/CustomerBalanceSummary.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/CustomerBalanceSummary/CustomerBalanceSummary.controller.ts @@ -4,7 +4,7 @@ import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { ICustomerBalanceSummaryQuery } from './CustomerBalanceSummary.types'; import { CustomerBalanceSummaryApplication } from './CustomerBalanceSummaryApplication'; import { AcceptType } from '@/constants/accept-type'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('/reports/customer-balance-summary') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/GeneralLedger/GeneralLedger.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/GeneralLedger/GeneralLedger.controller.ts index 65b08fc3a..f7d23b054 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/GeneralLedger/GeneralLedger.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/GeneralLedger/GeneralLedger.controller.ts @@ -4,7 +4,7 @@ import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { IGeneralLedgerSheetQuery } from './GeneralLedger.types'; import { GeneralLedgerApplication } from './GeneralLedgerApplication'; import { AcceptType } from '@/constants/accept-type'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('/reports/general-ledger') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/InventoryItemDetails/InventoryItemDetails.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/InventoryItemDetails/InventoryItemDetails.controller.ts index 19fc1abb0..9955e2359 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/InventoryItemDetails/InventoryItemDetails.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/InventoryItemDetails/InventoryItemDetails.controller.ts @@ -3,7 +3,7 @@ import { InventoryItemDetailsApplication } from './InventoryItemDetailsApplicati import { IInventoryDetailsQuery } from './InventoryItemDetails.types'; import { AcceptType } from '@/constants/accept-type'; import { Response } from 'express'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; @Controller('reports/inventory-item-details') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/InventoryValuationSheet/InventoryValuation.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/InventoryValuationSheet/InventoryValuation.controller.ts index 4c3cf14b5..64f18186e 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/InventoryValuationSheet/InventoryValuation.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/InventoryValuationSheet/InventoryValuation.controller.ts @@ -4,7 +4,7 @@ import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { InventoryValuationSheetApplication } from './InventoryValuationSheetApplication'; import { IInventoryValuationReportQuery } from './InventoryValuationSheet.types'; import { AcceptType } from '@/constants/accept-type'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('reports/inventory-valuation') @PublicRoute() diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/JournalSheet/JournalSheet.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/JournalSheet/JournalSheet.controller.ts index 75d05ed85..f57d46d66 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/JournalSheet/JournalSheet.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/JournalSheet/JournalSheet.controller.ts @@ -4,7 +4,7 @@ import { Response } from 'express'; import { AcceptType } from '@/constants/accept-type'; import { JournalSheetApplication } from './JournalSheetApplication'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('/reports/journal') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/ProfitLossSheet/ProfitLossSheet.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/ProfitLossSheet/ProfitLossSheet.controller.ts index 8315fc695..de2c0d833 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/ProfitLossSheet/ProfitLossSheet.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/ProfitLossSheet/ProfitLossSheet.controller.ts @@ -3,7 +3,7 @@ import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { IProfitLossSheetQuery } from './ProfitLossSheet.types'; import { ProfitLossSheetApplication } from './ProfitLossSheetApplication'; import { AcceptType } from '@/constants/accept-type'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('/reports/profit-loss-sheet') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/PurchasesByItems/PurchasesByItems.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/PurchasesByItems/PurchasesByItems.controller.ts index 7133835c2..3af0aad26 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/PurchasesByItems/PurchasesByItems.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/PurchasesByItems/PurchasesByItems.controller.ts @@ -3,7 +3,7 @@ import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { PurchasesByItemsApplication } from './PurchasesByItemsApplication'; import { IPurchasesByItemsReportQuery } from './types/PurchasesByItems.types'; import { AcceptType } from '@/constants/accept-type'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.controller.ts index 029dd42a8..f551855f8 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.controller.ts @@ -3,7 +3,7 @@ import { SalesTaxLiabilitySummaryQuery } from './SalesTaxLiability.types'; import { AcceptType } from '@/constants/accept-type'; import { SalesTaxLiabilitySummaryApplication } from './SalesTaxLiabilitySummaryApplication'; import { Response } from 'express'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('/reports/sales-tax-liability-summary') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByCustomer/TransactionsByCustomer.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByCustomer/TransactionsByCustomer.controller.ts index 38e265ff8..6bafa7686 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByCustomer/TransactionsByCustomer.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByCustomer/TransactionsByCustomer.controller.ts @@ -4,7 +4,7 @@ import { ITransactionsByCustomersFilter } from './TransactionsByCustomer.types'; import { TransactionsByCustomerApplication } from './TransactionsByCustomersApplication'; import { AcceptType } from '@/constants/accept-type'; import { Response } from 'express'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('/reports/transactions-by-customers') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByReference/TransactionsByReference.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByReference/TransactionsByReference.controller.ts index 32ba690f7..f0566f8c3 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByReference/TransactionsByReference.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByReference/TransactionsByReference.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Query } from '@nestjs/common'; import { TransactionsByReferenceApplication } from './TransactionsByReferenceApplication'; import { ITransactionsByReferenceQuery } from './TransactionsByReference.types'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('reports/transactions-by-reference') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByVendor/TransactionsByVendor.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByVendor/TransactionsByVendor.controller.ts index d7574a803..3b02ba1e0 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByVendor/TransactionsByVendor.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/TransactionsByVendor/TransactionsByVendor.controller.ts @@ -4,7 +4,7 @@ import { AcceptType } from '@/constants/accept-type'; import { Response } from 'express'; import { TransactionsByVendorApplication } from './TransactionsByVendorApplication'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('/reports/transactions-by-vendors') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/TrialBalanceSheet/TrialBalanceSheet.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/TrialBalanceSheet/TrialBalanceSheet.controller.ts index b2ce353ad..1aec2e805 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/TrialBalanceSheet/TrialBalanceSheet.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/TrialBalanceSheet/TrialBalanceSheet.controller.ts @@ -1,17 +1,11 @@ -import { - Controller, - Get, - Headers, - Query, - Res, -} from '@nestjs/common'; +import { Controller, Get, Headers, Query, Res } from '@nestjs/common'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { castArray } from 'lodash'; import { Response } from 'express'; import { ITrialBalanceSheetQuery } from './TrialBalanceSheet.types'; import { AcceptType } from '@/constants/accept-type'; import { TrialBalanceSheetApplication } from './TrialBalanceSheetApplication'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('reports/trial-balance-sheet') @ApiTags('reports') @@ -35,9 +29,8 @@ export class TrialBalanceSheetController { }; // Retrieves in json table format. if (acceptHeader.includes(AcceptType.ApplicationJsonTable)) { - const { table, meta, query } = await this.trialBalanceSheetApp.table( - filter, - ); + const { table, meta, query } = + await this.trialBalanceSheetApp.table(filter); return res.status(200).send({ table, meta, query }); // Retrieves in xlsx format } else if (acceptHeader.includes(AcceptType.ApplicationXlsx)) { @@ -66,9 +59,8 @@ export class TrialBalanceSheetController { res.send(pdfContent); // Retrieves in json format. } else { - const { data, query, meta } = await this.trialBalanceSheetApp.sheet( - filter, - ); + const { data, query, meta } = + await this.trialBalanceSheetApp.sheet(filter); return res.status(200).send({ data, query, meta }); } } diff --git a/packages/server-nest/src/modules/FinancialStatements/modules/VendorBalanceSummary/VendorBalanceSummary.controller.ts b/packages/server-nest/src/modules/FinancialStatements/modules/VendorBalanceSummary/VendorBalanceSummary.controller.ts index 45891b628..45bd55e7b 100644 --- a/packages/server-nest/src/modules/FinancialStatements/modules/VendorBalanceSummary/VendorBalanceSummary.controller.ts +++ b/packages/server-nest/src/modules/FinancialStatements/modules/VendorBalanceSummary/VendorBalanceSummary.controller.ts @@ -4,7 +4,7 @@ import { VendorBalanceSummaryApplication } from './VendorBalanceSummaryApplicati import { Response } from 'express'; import { AcceptType } from '@/constants/accept-type'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { PublicRoute } from '@/modules/Auth/Jwt.guard'; +import { PublicRoute } from '@/modules/Auth/guards/Jwt.local'; @Controller('/reports/vendor-balance-summary') @ApiTags('reports') diff --git a/packages/server-nest/src/modules/InventoryAdjutments/InventoryAdjustments.controller.ts b/packages/server-nest/src/modules/InventoryAdjutments/InventoryAdjustments.controller.ts index 1b6d8dac5..9a16d9935 100644 --- a/packages/server-nest/src/modules/InventoryAdjutments/InventoryAdjustments.controller.ts +++ b/packages/server-nest/src/modules/InventoryAdjutments/InventoryAdjustments.controller.ts @@ -14,7 +14,7 @@ import { IQuickInventoryAdjustmentDTO, } from './types/InventoryAdjustments.types'; import { InventoryAdjustment } from './models/InventoryAdjustment'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { IPaginationMeta } from '@/interfaces/Model'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { CreateQuickInventoryAdjustmentDto } from './dtos/CreateQuickInventoryAdjustment.dto'; diff --git a/packages/server-nest/src/modules/ItemCategories/ItemCategory.controller.ts b/packages/server-nest/src/modules/ItemCategories/ItemCategory.controller.ts index 7350819de..8b1967ba7 100644 --- a/packages/server-nest/src/modules/ItemCategories/ItemCategory.controller.ts +++ b/packages/server-nest/src/modules/ItemCategories/ItemCategory.controller.ts @@ -13,7 +13,7 @@ import { GetItemCategoriesResponse, IItemCategoriesFilter, } from './ItemCategory.interfaces'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateItemCategoryDto, diff --git a/packages/server-nest/src/modules/Items/Item.controller.ts b/packages/server-nest/src/modules/Items/Item.controller.ts index 141f67cdf..b97573f67 100644 --- a/packages/server-nest/src/modules/Items/Item.controller.ts +++ b/packages/server-nest/src/modules/Items/Item.controller.ts @@ -12,7 +12,7 @@ import { } from '@nestjs/common'; import { TenantController } from '../Tenancy/Tenant.controller'; import { SubscriptionGuard } from '../Subscription/interceptors/Subscription.guard'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { JwtAuthGuard, PublicRoute } from '../Auth/guards/Jwt.local'; import { ItemsApplicationService } from './ItemsApplication.service'; import { ApiOperation, @@ -22,13 +22,11 @@ import { ApiTags, } from '@nestjs/swagger'; import { IItemsFilter } from './types/Items.types'; -import { IItemDTO } from '@/interfaces/Item'; import { CreateItemDto, EditItemDto } from './dtos/Item.dto'; @Controller('/items') @UseGuards(SubscriptionGuard) @ApiTags('items') -@PublicRoute() export class ItemsController extends TenantController { constructor(private readonly itemsApplication: ItemsApplicationService) { super(); @@ -112,6 +110,7 @@ export class ItemsController extends TenantController { * @returns The updated item id. */ @Put(':id') + @UseGuards(JwtAuthGuard) @ApiOperation({ summary: 'Edit the given item (product or service).' }) @ApiResponse({ status: 200, diff --git a/packages/server-nest/src/modules/ManualJournals/ManualJournals.controller.ts b/packages/server-nest/src/modules/ManualJournals/ManualJournals.controller.ts index 688f28597..3de18c3cb 100644 --- a/packages/server-nest/src/modules/ManualJournals/ManualJournals.controller.ts +++ b/packages/server-nest/src/modules/ManualJournals/ManualJournals.controller.ts @@ -9,9 +9,12 @@ import { } from '@nestjs/common'; import { ManualJournalsApplication } from './ManualJournalsApplication.service'; import { IManualJournalDTO } from './types/ManualJournals.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { CreateManualJournalDto, EditManualJournalDto } from './dtos/ManualJournal.dto'; +import { + CreateManualJournalDto, + EditManualJournalDto, +} from './dtos/ManualJournal.dto'; @Controller('manual-journals') @ApiTags('manual-journals') @@ -40,7 +43,7 @@ export class ManualJournalsController { }) public editManualJournal( @Param('id') manualJournalId: number, - @Body() manualJournalDTO: EditManualJournalDto + @Body() manualJournalDTO: EditManualJournalDto, ) { return this.manualJournalsApplication.editManualJournal( manualJournalId, diff --git a/packages/server-nest/src/modules/Organization/Organization.controller.ts b/packages/server-nest/src/modules/Organization/Organization.controller.ts index db7ede02d..f6b92b77c 100644 --- a/packages/server-nest/src/modules/Organization/Organization.controller.ts +++ b/packages/server-nest/src/modules/Organization/Organization.controller.ts @@ -17,7 +17,7 @@ import { import { GetCurrentOrganizationService } from './queries/GetCurrentOrganization.service'; import { UpdateOrganizationService } from './commands/UpdateOrganization.service'; import { ApiTags, ApiOperation, ApiResponse, ApiBody } from '@nestjs/swagger'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; @ApiTags('Organization') @Controller('organization') diff --git a/packages/server-nest/src/modules/PaymentReceived/PaymentsReceived.controller.ts b/packages/server-nest/src/modules/PaymentReceived/PaymentsReceived.controller.ts index 662c8b225..c70318ea6 100644 --- a/packages/server-nest/src/modules/PaymentReceived/PaymentsReceived.controller.ts +++ b/packages/server-nest/src/modules/PaymentReceived/PaymentsReceived.controller.ts @@ -17,7 +17,7 @@ import { IPaymentsReceivedFilter, PaymentReceiveMailOptsDTO, } from './types/PaymentReceived.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('payments-received') @@ -108,7 +108,8 @@ export class PaymentReceivesController { @ApiOperation({ summary: 'Retrieves the payment received invoices.' }) @ApiResponse({ status: 200, - description: 'The payment received invoices have been successfully retrieved.', + description: + 'The payment received invoices have been successfully retrieved.', }) public getPaymentReceiveInvoices( @Param('id', ParseIntPipe) paymentReceiveId: number, @@ -122,7 +123,8 @@ export class PaymentReceivesController { @ApiOperation({ summary: 'Retrieves the payment received details.' }) @ApiResponse({ status: 200, - description: 'The payment received details have been successfully retrieved.', + description: + 'The payment received details have been successfully retrieved.', }) public getPaymentReceive( @Param('id', ParseIntPipe) paymentReceiveId: number, diff --git a/packages/server-nest/src/modules/PaymentServices/PaymentServices.controller.ts b/packages/server-nest/src/modules/PaymentServices/PaymentServices.controller.ts index 30c7bb057..466153485 100644 --- a/packages/server-nest/src/modules/PaymentServices/PaymentServices.controller.ts +++ b/packages/server-nest/src/modules/PaymentServices/PaymentServices.controller.ts @@ -15,7 +15,7 @@ import { import { Request, Response, NextFunction } from 'express'; import { ApiTags } from '@nestjs/swagger'; import { PaymentServicesApplication } from './PaymentServicesApplication'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { EditPaymentMethodDTO } from './types'; @ApiTags('PaymentServices') diff --git a/packages/server-nest/src/modules/PdfTemplate/PdfTemplates.controller.ts b/packages/server-nest/src/modules/PdfTemplate/PdfTemplates.controller.ts index a70095132..9ee69ea93 100644 --- a/packages/server-nest/src/modules/PdfTemplate/PdfTemplates.controller.ts +++ b/packages/server-nest/src/modules/PdfTemplate/PdfTemplates.controller.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import { PdfTemplateApplication } from './PdfTemplate.application'; import { ICreateInvoicePdfTemplateDTO, IEditPdfTemplateDTO } from './types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; @Controller('pdf-templates') diff --git a/packages/server-nest/src/modules/Roles/Roles.controller.ts b/packages/server-nest/src/modules/Roles/Roles.controller.ts index 27e015382..ac2c7a7d1 100644 --- a/packages/server-nest/src/modules/Roles/Roles.controller.ts +++ b/packages/server-nest/src/modules/Roles/Roles.controller.ts @@ -22,7 +22,7 @@ import { ApiParam, ApiBody, } from '@nestjs/swagger'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; @ApiTags('Roles') @Controller('roles') diff --git a/packages/server-nest/src/modules/SaleEstimates/SaleEstimates.controller.ts b/packages/server-nest/src/modules/SaleEstimates/SaleEstimates.controller.ts index dea059596..e4241a8c3 100644 --- a/packages/server-nest/src/modules/SaleEstimates/SaleEstimates.controller.ts +++ b/packages/server-nest/src/modules/SaleEstimates/SaleEstimates.controller.ts @@ -17,7 +17,7 @@ import { SaleEstimateMailOptionsDTO, } from './types/SaleEstimates.types'; import { SaleEstimate } from './models/SaleEstimate'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { CreateSaleEstimateDto, EditSaleEstimateDto, diff --git a/packages/server-nest/src/modules/SaleInvoices/SaleInvoices.controller.ts b/packages/server-nest/src/modules/SaleInvoices/SaleInvoices.controller.ts index ae86afc0d..caf8fb62d 100644 --- a/packages/server-nest/src/modules/SaleInvoices/SaleInvoices.controller.ts +++ b/packages/server-nest/src/modules/SaleInvoices/SaleInvoices.controller.ts @@ -17,7 +17,7 @@ import { SendInvoiceMailDTO, } from './SaleInvoice.types'; import { SaleInvoiceApplication } from './SaleInvoices.application'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiHeader, ApiOperation, diff --git a/packages/server-nest/src/modules/SaleReceipts/SaleReceipts.controller.ts b/packages/server-nest/src/modules/SaleReceipts/SaleReceipts.controller.ts index 07601171a..61d32b332 100644 --- a/packages/server-nest/src/modules/SaleReceipts/SaleReceipts.controller.ts +++ b/packages/server-nest/src/modules/SaleReceipts/SaleReceipts.controller.ts @@ -10,7 +10,7 @@ import { Put, } from '@nestjs/common'; import { SaleReceiptApplication } from './SaleReceiptApplication.service'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiParam, ApiTags } from '@nestjs/swagger'; import { CreateSaleReceiptDto, diff --git a/packages/server-nest/src/modules/Settings/Settings.controller.ts b/packages/server-nest/src/modules/Settings/Settings.controller.ts index e543f4bda..da29ce0d5 100644 --- a/packages/server-nest/src/modules/Settings/Settings.controller.ts +++ b/packages/server-nest/src/modules/Settings/Settings.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Post, Put } from '@nestjs/common'; import { SettingsApplicationService } from './SettingsApplication.service'; import { ISettingsDTO } from './Settings.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; @Controller('settings') diff --git a/packages/server-nest/src/modules/Subscription/interceptors/Subscription.guard.ts b/packages/server-nest/src/modules/Subscription/interceptors/Subscription.guard.ts index 8d67ca8c2..c3b430004 100644 --- a/packages/server-nest/src/modules/Subscription/interceptors/Subscription.guard.ts +++ b/packages/server-nest/src/modules/Subscription/interceptors/Subscription.guard.ts @@ -26,21 +26,21 @@ export class SubscriptionGuard implements CanActivate { context: ExecutionContext, subscriptionSlug: string = 'main', // Default value ): Promise { - const tenant = await this.tenancyContext.getTenant(); - const subscription = await this.planSubscriptionModel - .query() - .findOne('slug', subscriptionSlug) - .where('tenant_id', tenant.id); + // const tenant = await this.tenancyContext.getTenant(); + // const subscription = await this.planSubscriptionModel + // .query() + // .findOne('slug', subscriptionSlug) + // .where('tenant_id', tenant.id); - if (!subscription) { - throw new UnauthorizedException('Tenant has no subscription.'); - } + // if (!subscription) { + // throw new UnauthorizedException('Tenant has no subscription.'); + // } - const isSubscriptionInactive = subscription.inactive(); + // const isSubscriptionInactive = subscription.inactive(); - if (isSubscriptionInactive) { - throw new UnauthorizedException('Organization subscription is inactive.'); - } + // if (isSubscriptionInactive) { + // throw new UnauthorizedException('Organization subscription is inactive.'); + // } return true; } } diff --git a/packages/server-nest/src/modules/System/models/SystemUser.ts b/packages/server-nest/src/modules/System/models/SystemUser.ts index d213544bd..167a99b7e 100644 --- a/packages/server-nest/src/modules/System/models/SystemUser.ts +++ b/packages/server-nest/src/modules/System/models/SystemUser.ts @@ -1,10 +1,11 @@ +import * as bcrypt from 'bcrypt'; import { BaseModel } from '@/models/Model'; export class SystemUser extends BaseModel { public readonly firstName: string; public readonly lastName: string; public readonly email: string; - public readonly password: string; + public password: string; public readonly active: boolean; public readonly tenantId: number; @@ -15,4 +16,15 @@ export class SystemUser extends BaseModel { static get tableName() { return 'users'; } + + async hashPassword(): Promise { + const salt = await bcrypt.genSalt(); + if (!/^\$2[abxy]?\$\d+\$/.test(this.password)) { + this.password = await bcrypt.hash(this.password, salt); + } + } + + async checkPassword(plainPassword: string): Promise { + return await bcrypt.compare(plainPassword, this.password); + } } diff --git a/packages/server-nest/src/modules/TaxRates/TaxRate.controller.ts b/packages/server-nest/src/modules/TaxRates/TaxRate.controller.ts index 47dd6388e..588398288 100644 --- a/packages/server-nest/src/modules/TaxRates/TaxRate.controller.ts +++ b/packages/server-nest/src/modules/TaxRates/TaxRate.controller.ts @@ -8,7 +8,7 @@ import { Put, } from '@nestjs/common'; import { TaxRatesApplication } from './TaxRate.application'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateTaxRateDto, EditTaxRateDto } from './dtos/TaxRate.dto'; diff --git a/packages/server-nest/src/modules/TransactionsLocking/TransactionsLocking.controller.ts b/packages/server-nest/src/modules/TransactionsLocking/TransactionsLocking.controller.ts index ca358a62e..4da17606a 100644 --- a/packages/server-nest/src/modules/TransactionsLocking/TransactionsLocking.controller.ts +++ b/packages/server-nest/src/modules/TransactionsLocking/TransactionsLocking.controller.ts @@ -3,7 +3,7 @@ import { TransactionsLockingService } from './commands/CommandTransactionsLockin import { TransactionsLockingGroup } from './types/TransactionsLocking.types'; import { ITransactionLockingPartiallyDTO } from './types/TransactionsLocking.types'; import { QueryTransactionsLocking } from './queries/QueryTransactionsLocking'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation } from '@nestjs/swagger'; import { ApiTags } from '@nestjs/swagger'; import { diff --git a/packages/server-nest/src/modules/VendorCredit/VendorCredits.controller.ts b/packages/server-nest/src/modules/VendorCredit/VendorCredits.controller.ts index df216971f..a2dda11f4 100644 --- a/packages/server-nest/src/modules/VendorCredit/VendorCredits.controller.ts +++ b/packages/server-nest/src/modules/VendorCredit/VendorCredits.controller.ts @@ -10,7 +10,7 @@ import { } from '@nestjs/common'; import { VendorCreditsApplicationService } from './VendorCreditsApplication.service'; import { IVendorCreditsQueryDTO } from './types/VendorCredit.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateVendorCreditDto, diff --git a/packages/server-nest/src/modules/VendorCreditsRefund/VendorCreditsRefund.controller.ts b/packages/server-nest/src/modules/VendorCreditsRefund/VendorCreditsRefund.controller.ts index a6cf6f7a3..6d914e6b1 100644 --- a/packages/server-nest/src/modules/VendorCreditsRefund/VendorCreditsRefund.controller.ts +++ b/packages/server-nest/src/modules/VendorCreditsRefund/VendorCreditsRefund.controller.ts @@ -1,10 +1,8 @@ - - import { Body, Controller, Delete, Param, Post } from '@nestjs/common'; import { VendorCreditsRefundApplication } from './VendorCreditsRefund.application'; import { IRefundVendorCreditDTO } from './types/VendorCreditRefund.types'; import { RefundVendorCredit } from './models/RefundVendorCredit'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { RefundVendorCreditDto } from './dtos/RefundVendorCredit.dto'; diff --git a/packages/server-nest/src/modules/Vendors/Vendors.controller.ts b/packages/server-nest/src/modules/Vendors/Vendors.controller.ts index db968072e..464512e66 100644 --- a/packages/server-nest/src/modules/Vendors/Vendors.controller.ts +++ b/packages/server-nest/src/modules/Vendors/Vendors.controller.ts @@ -13,7 +13,7 @@ import { IVendorOpeningBalanceEditDTO, IVendorsFilter, } from './types/Vendors.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateVendorDto } from './dtos/CreateVendor.dto'; import { EditVendorDto } from './dtos/EditVendor.dto'; diff --git a/packages/server-nest/src/modules/Warehouses/Warehouses.controller.ts b/packages/server-nest/src/modules/Warehouses/Warehouses.controller.ts index 4a0501910..e7ee892f7 100644 --- a/packages/server-nest/src/modules/Warehouses/Warehouses.controller.ts +++ b/packages/server-nest/src/modules/Warehouses/Warehouses.controller.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import { WarehousesApplication } from './WarehousesApplication.service'; import { ICreateWarehouseDTO, IEditWarehouseDTO } from './Warehouse.types'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreateWarehouseDto, EditWarehouseDto } from './dtos/Warehouse.dto'; diff --git a/packages/server-nest/src/modules/WarehousesTransfers/WarehouseTransfers.controller.ts b/packages/server-nest/src/modules/WarehousesTransfers/WarehouseTransfers.controller.ts index 28f0d4822..535b766e5 100644 --- a/packages/server-nest/src/modules/WarehousesTransfers/WarehouseTransfers.controller.ts +++ b/packages/server-nest/src/modules/WarehousesTransfers/WarehouseTransfers.controller.ts @@ -11,7 +11,7 @@ import { } from '@nestjs/common'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { WarehouseTransferApplication } from './WarehouseTransferApplication'; -import { PublicRoute } from '../Auth/Jwt.guard'; +import { PublicRoute } from '../Auth/guards/Jwt.local'; import { CreateWarehouseTransferDto, EditWarehouseTransferDto,