Skip to content

Commit bec9261

Browse files
committed
feat: added argon2 for password encryption
1 parent a4efd8e commit bec9261

File tree

13 files changed

+69
-315
lines changed

13 files changed

+69
-315
lines changed

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"@nestjs/swagger": "^11.1.5",
3636
"@nestjs/typeorm": "^11.0.0",
3737
"ajv": "^8.17.1",
38-
"bcrypt": "^5.1.1",
38+
"argon2": "^0.43.0",
3939
"class-transformer": "^0.5.1",
4040
"class-validator": "^0.14.1",
4141
"dotenv": "^16.5.0",
@@ -55,7 +55,6 @@
5555
"@nestjs/cli": "^11.0.7",
5656
"@nestjs/schematics": "^11.0.5",
5757
"@nestjs/testing": "^11.1.0",
58-
"@types/bcrypt": "^5.0.2",
5958
"@types/jest": "^29.5.14",
6059
"@types/node": "^22.15.2",
6160
"@types/nodemailer": "^6.4.17",
@@ -111,7 +110,7 @@
111110
"onlyBuiltDependencies": [
112111
"@nestjs/core",
113112
"@scarf/scarf",
114-
"bcrypt"
113+
"argon2"
115114
]
116115
}
117116
}

pnpm-lock.yaml

Lines changed: 26 additions & 277 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/common/hashing/bcrypt.service.spec.ts renamed to src/common/hashing/argon2.service.spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { Test, TestingModule } from '@nestjs/testing';
2-
import { BcryptService } from './bcrypt.service';
2+
import { Argon2Service } from './argon2.service';
33

4-
describe('BcryptService', () => {
5-
let service: BcryptService;
4+
describe('Argon2Service', () => {
5+
let service: Argon2Service;
66

77
beforeEach(async () => {
88
const module: TestingModule = await Test.createTestingModule({
99
providers: [
1010
{
11-
provide: BcryptService,
11+
provide: Argon2Service,
1212
useValue: {
1313
hash: jest.fn(),
1414
compare: jest.fn(() => true),
@@ -17,7 +17,7 @@ describe('BcryptService', () => {
1717
],
1818
}).compile();
1919

20-
service = module.get<BcryptService>(BcryptService);
20+
service = module.get<Argon2Service>(Argon2Service);
2121
});
2222

2323
it('should be defined', () => {

src/common/hashing/argon2.service.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Injectable } from '@nestjs/common';
2+
import * as argon2 from 'argon2';
3+
import { HashingService } from './hashing.service';
4+
5+
@Injectable()
6+
export class Argon2Service implements HashingService {
7+
private readonly options = {
8+
type: argon2.argon2id,
9+
memoryCost: 2 ** 16,
10+
timeCost: 3,
11+
parallelism: 1,
12+
};
13+
14+
public async hash(data: string | Buffer): Promise<string> {
15+
return await argon2.hash(data, this.options);
16+
}
17+
18+
public compare(data: string | Buffer, encrypted: string): Promise<boolean> {
19+
return argon2.verify(encrypted, data);
20+
}
21+
}

src/common/hashing/bcrypt.service.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/common/hashing/hashing.service.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Test, TestingModule } from '@nestjs/testing';
2-
import { BcryptService } from './bcrypt.service';
2+
import { Argon2Service } from './argon2.service';
33
import { HashingService } from './hashing.service';
44

55
describe('HashingService', () => {
@@ -10,7 +10,7 @@ describe('HashingService', () => {
1010
providers: [
1111
{
1212
provide: HashingService,
13-
useClass: BcryptService,
13+
useClass: Argon2Service,
1414
},
1515
],
1616
}).compile();

src/iam/change-password/change-password.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
55
import { Users } from '../../users/models/users.model';
66
import { UsersService } from '../../users/users.service';
77
import { MailerModule } from '../../common/mailer/mailer.module';
8-
import { BcryptService } from '../../common/hashing/bcrypt.service';
8+
import { Argon2Service } from '../../common/hashing/argon2.service';
99
import { HashingService } from '../../common/hashing/hashing.service';
1010
import { APP_GUARD } from '@nestjs/core';
1111
import { AuthenticationGuard } from '../login/guards/authentication/authentication.guard';
@@ -25,7 +25,7 @@ import { provideUsersRepository } from '../../users/repositories/users.repositor
2525
providers: [
2626
{
2727
provide: HashingService,
28-
useClass: BcryptService,
28+
useClass: Argon2Service,
2929
},
3030
{
3131
provide: APP_GUARD,

src/iam/forgot-password/forgot-password.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
22
import { ForgotPasswordService } from './forgot-password.service';
33
import { ForgotPasswordController } from './forgot-password.controller';
44
import { TypeOrmModule } from '@nestjs/typeorm';
5-
import { BcryptService } from '../../common/hashing/bcrypt.service';
5+
import { Argon2Service } from '../../common/hashing/argon2.service';
66
import { HashingService } from '../../common/hashing/hashing.service';
77
import { MailerModule } from '../../common/mailer/mailer.module';
88
import { UtilsModule } from '../../common/utils/utils.module';
@@ -15,7 +15,7 @@ import { UsersService } from '../../users/users.service';
1515
providers: [
1616
{
1717
provide: HashingService,
18-
useClass: BcryptService,
18+
useClass: Argon2Service,
1919
},
2020
ForgotPasswordService,
2121
UsersService,

src/iam/login/login.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { JwtModule } from '@nestjs/jwt';
77
import { UsersService } from '../../users/users.service';
88
import { ConfigModule } from '@nestjs/config';
99
import { HashingService } from '../../common/hashing/hashing.service';
10-
import { BcryptService } from '../../common/hashing/bcrypt.service';
10+
import { Argon2Service } from '../../common/hashing/argon2.service';
1111
import { APP_GUARD } from '@nestjs/core';
1212
import { AuthenticationGuard } from './guards/authentication/authentication.guard';
1313
import { AccessTokenGuard } from './guards/access-token/access-token.guard';
@@ -23,7 +23,7 @@ import { provideUsersRepository } from '../../users/repositories/users.repositor
2323
providers: [
2424
{
2525
provide: HashingService,
26-
useClass: BcryptService,
26+
useClass: Argon2Service,
2727
},
2828
{
2929
provide: APP_GUARD,

src/iam/register/register.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Module } from '@nestjs/common';
22
import { TypeOrmModule } from '@nestjs/typeorm';
3-
import { BcryptService } from '../../common/hashing/bcrypt.service';
3+
import { Argon2Service } from '../../common/hashing/argon2.service';
44
import { HashingService } from '../../common/hashing/hashing.service';
55
import { MailerModule } from '../../common/mailer/mailer.module';
66
import { Users } from '../../users/models/users.model';
@@ -15,7 +15,7 @@ import { provideUsersRepository } from '../../users/repositories/users.repositor
1515
providers: [
1616
{
1717
provide: HashingService,
18-
useClass: BcryptService,
18+
useClass: Argon2Service,
1919
},
2020
RegisterService,
2121
UsersService,

src/users/models/users.model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ export class Users {
1616
})
1717
email: string;
1818

19-
@Column({ length: 60 })
19+
@Column({ length: 255 })
2020
password: string;
2121
}

src/users/users.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Users } from './models/users.model';
44
import { UsersService } from './users.service';
55
import { UsersController } from './users.controller';
66
import { MailerModule } from '../common/mailer/mailer.module';
7-
import { BcryptService } from '../common/hashing/bcrypt.service';
7+
import { Argon2Service } from '../common/hashing/argon2.service';
88
import { HashingService } from '../common/hashing/hashing.service';
99
import { provideUsersRepository } from './repositories/users.repository.provider';
1010

@@ -14,7 +14,7 @@ import { provideUsersRepository } from './repositories/users.repository.provider
1414
providers: [
1515
{
1616
provide: HashingService,
17-
useClass: BcryptService,
17+
useClass: Argon2Service,
1818
},
1919
UsersService,
2020
...provideUsersRepository(),

src/users/users.service.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { HttpException, NotFoundException } from '@nestjs/common';
22
import { Test, TestingModule } from '@nestjs/testing';
3-
import { BcryptService } from '../common/hashing/bcrypt.service';
3+
import { Argon2Service } from '../common/hashing/argon2.service';
44
import { HashingService } from '../common/hashing/hashing.service';
55
import { UserDto } from './dto/user.dto';
66
import { UsersService } from './users.service';
@@ -78,7 +78,7 @@ describe('UsersService', () => {
7878
UsersService,
7979
{
8080
provide: HashingService,
81-
useClass: BcryptService,
81+
useClass: Argon2Service,
8282
},
8383
{
8484
provide: USERS_REPOSITORY_TOKEN,

0 commit comments

Comments
 (0)