mono/packages/vfs/ref-server/services/token.service.ts

50 lines
1.4 KiB
TypeScript

import { decode, sign, verify } from 'jsonwebtoken';
import { Component } from '@nestjs/common';
@Component()
export class TokenService {
sign(user: any) {
return sign(
{
id: user.id,
isStaff: user.isStaff,
isActive: user.isActive,
isSuperuser: user.isSuperuser,
groups: user.groups.map(group => {
return { name: group.name };
})
},
this.getSecretKey({
id: user.id,
isStaff: user.isStaff,
isActive: user.isActive,
isSuperuser: user.isSuperuser,
groups: user.groups
}),
{
expiresIn: process.env.JWT_EXPIRATION_DELTA
}
)
}
verify(token: string) {
const data: any = decode(
token
);
return verify(token, this.getSecretKey(data));
}
decode(token: string) {
return decode(
token
)
}
getSecretKey(data: any) {
return process.env.SECRET_KEY +
(data ? (
'$' + data.id +
'$' + data.isStaff +
'$' + data.isActive +
'$' + data.isSuperuser +
(data.groups ? data.groups.map(group => '$' + group.name) : '')
) : '');
}
}