Merge branch 'development' into 'devops-staging'
add: role in jwt See merge request empatnusabangsa/ppob/ppob-backend!5
This commit is contained in:
commit
1a3acbf2de
|
@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||||
import { UsersService } from '../users/users.service';
|
import { UsersService } from '../users/users.service';
|
||||||
import { hashPassword } from '../helper/hash_password';
|
import { hashPassword } from '../helper/hash_password';
|
||||||
import { JwtService } from '@nestjs/jwt';
|
import { JwtService } from '@nestjs/jwt';
|
||||||
|
import { User } from '../users/entities/user.entity';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthService {
|
export class AuthService {
|
||||||
|
@ -22,10 +23,11 @@ export class AuthService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async login(user: any) {
|
async login(user: User) {
|
||||||
const payload = {
|
const payload = {
|
||||||
username: user.username,
|
username: user.username,
|
||||||
sub: user.userId,
|
sub: user.id,
|
||||||
|
role: user.roles.name,
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common';
|
import {
|
||||||
|
forwardRef,
|
||||||
|
HttpException,
|
||||||
|
HttpStatus,
|
||||||
|
Inject,
|
||||||
|
Injectable,
|
||||||
|
} from '@nestjs/common';
|
||||||
import { CreateUserDto } from './dto/create-user.dto';
|
import { CreateUserDto } from './dto/create-user.dto';
|
||||||
import { UpdateUserDto } from './dto/update-user.dto';
|
import { UpdateUserDto } from './dto/update-user.dto';
|
||||||
import { Connection, EntityNotFoundError, Repository } from 'typeorm';
|
import { Connection, EntityNotFoundError, Repository } from 'typeorm';
|
||||||
|
@ -10,14 +16,18 @@ import { CoaService } from 'src/transaction/coa.service';
|
||||||
import { balanceType, coaType } from 'src/helper/enum-list';
|
import { balanceType, coaType } from 'src/helper/enum-list';
|
||||||
import { RoleService } from 'src/configurable/roles.service';
|
import { RoleService } from 'src/configurable/roles.service';
|
||||||
import { InputCoaDto } from 'src/transaction/dto/input-coa.dto';
|
import { InputCoaDto } from 'src/transaction/dto/input-coa.dto';
|
||||||
import * as uuid from "uuid";
|
import * as uuid from 'uuid';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UsersService {
|
export class UsersService {
|
||||||
constructor(
|
constructor(
|
||||||
@InjectRepository(User)
|
@InjectRepository(User)
|
||||||
private usersRepository: Repository<User>,
|
private usersRepository: Repository<User>,
|
||||||
@Inject(forwardRef(() => CoaService))
|
@Inject(
|
||||||
|
forwardRef(() => {
|
||||||
|
return CoaService;
|
||||||
|
}),
|
||||||
|
)
|
||||||
private coaService: CoaService,
|
private coaService: CoaService,
|
||||||
private roleService: RoleService,
|
private roleService: RoleService,
|
||||||
private connection: Connection,
|
private connection: Connection,
|
||||||
|
@ -28,32 +38,36 @@ export class UsersService {
|
||||||
const superior = await this.findByUsername(currentUser.username);
|
const superior = await this.findByUsername(currentUser.username);
|
||||||
const salt = randomStringGenerator();
|
const salt = randomStringGenerator();
|
||||||
|
|
||||||
let userData = new User();
|
const userData = new User();
|
||||||
|
|
||||||
userData.id = uuid.v4();
|
userData.id = uuid.v4();
|
||||||
userData.username = createUserDto.username,
|
(userData.username = createUserDto.username),
|
||||||
userData.password = await hashPassword(createUserDto.password, salt),
|
(userData.password = await hashPassword(createUserDto.password, salt)),
|
||||||
userData.salt = salt,
|
(userData.salt = salt),
|
||||||
userData.superior = superior,
|
(userData.superior = superior),
|
||||||
userData.roles = roles
|
(userData.roles = roles);
|
||||||
|
|
||||||
await this.connection.transaction(async (manager) => {
|
await this.connection.transaction(async (manager) => {
|
||||||
const result = await manager.insert(User, userData);
|
const result = await manager.insert(User, userData);
|
||||||
|
|
||||||
let dataCoaWallet = new InputCoaDto();
|
const dataCoaWallet = new InputCoaDto();
|
||||||
|
|
||||||
dataCoaWallet.user = userData;
|
dataCoaWallet.user = userData;
|
||||||
dataCoaWallet.balanceType = balanceType.CREDIT;
|
dataCoaWallet.balanceType = balanceType.CREDIT;
|
||||||
dataCoaWallet.type = coaType.WALLET;
|
dataCoaWallet.type = coaType.WALLET;
|
||||||
dataCoaWallet.coaEntityManager = manager;
|
dataCoaWallet.coaEntityManager = manager;
|
||||||
|
|
||||||
if (createUserDto.superior) {
|
if (createUserDto.superior) {
|
||||||
let dataCoaAP = new InputCoaDto();
|
const dataCoaAP = new InputCoaDto();
|
||||||
|
|
||||||
dataCoaAP.user = userData;
|
dataCoaAP.user = userData;
|
||||||
dataCoaAP.balanceType = balanceType.CREDIT;
|
dataCoaAP.balanceType = balanceType.CREDIT;
|
||||||
dataCoaAP.relatedUserId = superior.id;
|
dataCoaAP.relatedUserId = superior.id;
|
||||||
dataCoaAP.type = coaType.ACCOUNT_PAYABLE;
|
dataCoaAP.type = coaType.ACCOUNT_PAYABLE;
|
||||||
dataCoaAP.coaEntityManager = manager;
|
dataCoaAP.coaEntityManager = manager;
|
||||||
|
|
||||||
let dataCoaAR = new InputCoaDto();
|
const dataCoaAR = new InputCoaDto();
|
||||||
|
|
||||||
dataCoaAR.user = userData;
|
dataCoaAR.user = userData;
|
||||||
dataCoaAR.balanceType = balanceType.DEBIT;
|
dataCoaAR.balanceType = balanceType.DEBIT;
|
||||||
dataCoaAR.relatedUserId = superior.id;
|
dataCoaAR.relatedUserId = superior.id;
|
||||||
|
@ -65,8 +79,7 @@ export class UsersService {
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.coaService.create(dataCoaWallet);
|
await this.coaService.create(dataCoaWallet);
|
||||||
|
});
|
||||||
})
|
|
||||||
|
|
||||||
return userData;
|
return userData;
|
||||||
}
|
}
|
||||||
|
@ -86,7 +99,7 @@ export class UsersService {
|
||||||
skip: page * 10,
|
skip: page * 10,
|
||||||
take: 10,
|
take: 10,
|
||||||
where: {
|
where: {
|
||||||
roles:relationId
|
roles: relationId,
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
updatedAt: 'DESC',
|
updatedAt: 'DESC',
|
||||||
|
@ -115,7 +128,7 @@ export class UsersService {
|
||||||
async findByUsername(username: string) {
|
async findByUsername(username: string) {
|
||||||
try {
|
try {
|
||||||
return await this.usersRepository.findOneOrFail({
|
return await this.usersRepository.findOneOrFail({
|
||||||
username:username
|
username: username,
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof EntityNotFoundError) {
|
if (e instanceof EntityNotFoundError) {
|
||||||
|
@ -134,13 +147,15 @@ export class UsersService {
|
||||||
|
|
||||||
async findOne(id: string) {
|
async findOne(id: string) {
|
||||||
const coa = await this.coaService.findByUser(id, coaType.WALLET);
|
const coa = await this.coaService.findByUser(id, coaType.WALLET);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const userData = await this.usersRepository.findOneOrFail({
|
const userData = await this.usersRepository.findOneOrFail({
|
||||||
where: {
|
where: {
|
||||||
id: id
|
id: id,
|
||||||
},
|
},
|
||||||
relations:["roles","superior"]
|
relations: ['roles', 'superior'],
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...userData,
|
...userData,
|
||||||
wallet: coa.amount,
|
wallet: coa.amount,
|
||||||
|
@ -207,6 +222,7 @@ export class UsersService {
|
||||||
where: {
|
where: {
|
||||||
username,
|
username,
|
||||||
},
|
},
|
||||||
|
relations: ['roles'],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user