38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { Injectable, UnprocessableEntityException } from '@nestjs/common';
|
|
import { SessionService, UserProvider, UsersSession } from 'src/core/sessions';
|
|
import { UserDataService } from '../../data/user.dataservice';
|
|
import { LoginRequest } from '../entities/request.interface';
|
|
import { User } from '../entities/user.interface';
|
|
|
|
@Injectable()
|
|
export class AuthService {
|
|
constructor(
|
|
private readonly userDataService: UserDataService,
|
|
private readonly session: SessionService,
|
|
private readonly user: UserProvider,
|
|
) {}
|
|
async createAccessToken(payload: LoginRequest): Promise<string> {
|
|
const user = await this.userDataService.login(payload);
|
|
|
|
if (!user)
|
|
throw new UnprocessableEntityException(`Username or Password not match`);
|
|
|
|
const token = this.session.createAccessToken({
|
|
id: user.id,
|
|
// username: user.username,
|
|
name: user.name,
|
|
// roles: user.roles,
|
|
});
|
|
|
|
return token;
|
|
}
|
|
|
|
getUser(): UsersSession {
|
|
return this.user.user;
|
|
}
|
|
|
|
async getUsers(): Promise<User[]> {
|
|
return this.userDataService.users();
|
|
}
|
|
}
|