backend: Integrate bcrypt for password hashing and verification
This commit is contained in:
parent
d10e6ea519
commit
6725330a7a
367
backend/package-lock.json
generated
367
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -42,6 +42,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "3.673.0",
|
"@aws-sdk/client-s3": "3.673.0",
|
||||||
|
"bcrypt": "5.1.1",
|
||||||
"chalk": "5.4.1",
|
"chalk": "5.4.1",
|
||||||
"cookie-parser": "1.4.7",
|
"cookie-parser": "1.4.7",
|
||||||
"cors": "2.8.5",
|
"cors": "2.8.5",
|
||||||
@ -62,6 +63,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@openapitools/openapi-generator-cli": "^2.16.3",
|
"@openapitools/openapi-generator-cli": "^2.16.3",
|
||||||
|
"@types/bcrypt": "5.0.2",
|
||||||
"@types/cookie-parser": "1.4.7",
|
"@types/cookie-parser": "1.4.7",
|
||||||
"@types/cors": "2.8.17",
|
"@types/cors": "2.8.17",
|
||||||
"@types/express": "4.17.21",
|
"@types/express": "4.17.21",
|
||||||
|
|||||||
13
backend/src/helpers/password.helper.ts
Normal file
13
backend/src/helpers/password.helper.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import bcrypt from 'bcrypt';
|
||||||
|
|
||||||
|
const SALT_ROUNDS = 10;
|
||||||
|
|
||||||
|
export class PasswordHelper {
|
||||||
|
static async hashPassword(password: string): Promise<string> {
|
||||||
|
return bcrypt.hash(password, SALT_ROUNDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static async verifyPassword(password: string, hash: string): Promise<boolean> {
|
||||||
|
return bcrypt.compare(password, hash);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,6 +10,7 @@ import { GlobalPreferencesStorageFactory } from './global-preferences.factory.js
|
|||||||
import { errorRoomNotFound, OpenViduMeetError } from '../../models/error.model.js';
|
import { errorRoomNotFound, OpenViduMeetError } from '../../models/error.model.js';
|
||||||
import { MEET_NAME_ID, MEET_SECRET, MEET_USER, MEET_WEBHOOK_ENABLED, MEET_WEBHOOK_URL } from '../../environment.js';
|
import { MEET_NAME_ID, MEET_SECRET, MEET_USER, MEET_WEBHOOK_ENABLED, MEET_WEBHOOK_URL } from '../../environment.js';
|
||||||
import { injectable, inject } from '../../config/dependency-injector.config.js';
|
import { injectable, inject } from '../../config/dependency-injector.config.js';
|
||||||
|
import { PasswordHelper } from '../../helpers/password.helper.js';
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class GlobalPreferencesService<
|
export class GlobalPreferencesService<
|
||||||
@ -29,7 +30,7 @@ export class GlobalPreferencesService<
|
|||||||
* @returns {Promise<G>} Default global preferences.
|
* @returns {Promise<G>} Default global preferences.
|
||||||
*/
|
*/
|
||||||
async ensurePreferencesInitialized(): Promise<G> {
|
async ensurePreferencesInitialized(): Promise<G> {
|
||||||
const preferences = this.getDefaultPreferences();
|
const preferences = await this.getDefaultPreferences();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.storage.initialize(preferences);
|
await this.storage.initialize(preferences);
|
||||||
@ -135,7 +136,7 @@ export class GlobalPreferencesService<
|
|||||||
* Returns the default global preferences.
|
* Returns the default global preferences.
|
||||||
* @returns {G}
|
* @returns {G}
|
||||||
*/
|
*/
|
||||||
protected getDefaultPreferences(): G {
|
protected async getDefaultPreferences(): Promise<G> {
|
||||||
return {
|
return {
|
||||||
projectId: MEET_NAME_ID,
|
projectId: MEET_NAME_ID,
|
||||||
webhooksPreferences: {
|
webhooksPreferences: {
|
||||||
@ -153,7 +154,7 @@ export class GlobalPreferencesService<
|
|||||||
type: AuthType.SINGLE_USER,
|
type: AuthType.SINGLE_USER,
|
||||||
credentials: {
|
credentials: {
|
||||||
username: MEET_USER,
|
username: MEET_USER,
|
||||||
passwordHash: MEET_SECRET
|
passwordHash: await PasswordHelper.hashPassword(MEET_SECRET)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user