mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 20:08:37 +08:00
42 lines
1019 B
JavaScript
42 lines
1019 B
JavaScript
const errors = require('../../errors');
|
|
const TokensService = require('../../services/tokens');
|
|
const {
|
|
CREATE_TOKEN,
|
|
REVOKE_TOKEN
|
|
} = require('../../perms/constants');
|
|
|
|
// Creates a new token for a user.
|
|
const createToken = async ({user}, {name}) => {
|
|
let {pat, jwt} = await TokensService.create(user.id, name);
|
|
|
|
// Attach the token to the PAT.
|
|
pat.jwt = jwt;
|
|
|
|
// Return that PAT!
|
|
return pat;
|
|
};
|
|
|
|
// Revokes the token from the user.
|
|
const revokeToken = async ({user}, {id}) => {
|
|
return TokensService.revoke(user.id, id);
|
|
};
|
|
|
|
module.exports = (context) => {
|
|
let mutators = {
|
|
Token: {
|
|
create: () => Promise.reject(errors.ErrNotAuthorized),
|
|
revoke: () => Promise.reject(errors.ErrNotAuthorized)
|
|
}
|
|
};
|
|
|
|
if (context.user && context.user.can(CREATE_TOKEN)) {
|
|
mutators.Token.create = (input) => createToken(context, input);
|
|
}
|
|
|
|
if (context.user && context.user.can(REVOKE_TOKEN)) {
|
|
mutators.Token.revoke = (input) => revokeToken(context, input);
|
|
}
|
|
|
|
return mutators;
|
|
};
|