feat: Admin Area Players Management

This commit is contained in:
OpenVelo Agent
2026-07-23 08:08:47 +00:00
parent 705530e71f
commit c9c82e2c60
27 changed files with 2039 additions and 218 deletions
+4 -18
View File
@@ -20,6 +20,7 @@ import { LoginBackoffService } from '../../common/services/login-backoff.service
import { RegistrationRateLimitService } from '../../common/services/registration-rate-limit.service';
import { ChangePasswordDto, LoginDto, LoginResponse, RegisterDto } from './dto/auth.dto';
import { validatePassword } from '../../common/utils/password-policy';
import { hashPassword } from '../../common/utils/password-hashing';
import { SettingsService } from '../settings/settings.module';
import { SETTINGS_KEYS } from '../../config/env.schema';
import { UsersRankService } from '../users/users-rank.service';
@@ -117,12 +118,7 @@ export class AuthService implements OnModuleInit {
const existing = await manager.findOne(UserEntity, { where: { username } });
if (existing) throw new ApiError(ERROR_CODES.CONFLICT, 'Username already taken', 409);
const passwordHash = await argon2.hash(password, {
type: argon2.argon2id,
memoryCost: this.config.get<number>('ARGON2_MEMORY_COST'),
timeCost: this.config.get<number>('ARGON2_TIME_COST'),
parallelism: this.config.get<number>('ARGON2_PARALLELISM'),
});
const passwordHash = await hashPassword(password, this.config);
const user = manager.create(UserEntity, {
id: uuid(),
username,
@@ -162,12 +158,7 @@ export class AuthService implements OnModuleInit {
throw new ApiError(ERROR_CODES.USERNAME_TAKEN, 'Username already taken', 409);
}
const passwordHash = await argon2.hash(dto.password, {
type: argon2.argon2id,
memoryCost: this.config.get<number>('ARGON2_MEMORY_COST'),
timeCost: this.config.get<number>('ARGON2_TIME_COST'),
parallelism: this.config.get<number>('ARGON2_PARALLELISM'),
});
const passwordHash = await hashPassword(dto.password, this.config);
const user = manager.create(UserEntity, {
id: uuid(),
username: dto.username,
@@ -220,12 +211,7 @@ export class AuthService implements OnModuleInit {
throw e;
}
user.passwordHash = await argon2.hash(dto.newPassword, {
type: argon2.argon2id,
memoryCost: this.config.get<number>('ARGON2_MEMORY_COST'),
timeCost: this.config.get<number>('ARGON2_TIME_COST'),
parallelism: this.config.get<number>('ARGON2_PARALLELISM'),
});
user.passwordHash = await hashPassword(dto.newPassword, this.config);
await manager.save(user);
// Invalidate all existing refresh tokens for this user.