diff --git a/server/src/classes/User.js b/server/src/classes/User.js index 7553b21..96e3304 100755 --- a/server/src/classes/User.js +++ b/server/src/classes/User.js @@ -19,13 +19,13 @@ class User { * Initializes the object, since asynchronous tasks can't run in the constructor * @return {Promise} */ - async init() { + async init(forceAD = false) { try { let user = await prisma.user.findUnique({ where: { sAMAccountName: this.username } }) - if (!user || !user.roles || !user.groups) + if (forceAD || !user || !user.roles || !user.groups) user = await User.upsertUser(this.username) else User.upsertUser(this.username) @@ -200,15 +200,16 @@ class User { }) reject(new Error(err.message)) } else { - User.upsertUser(this.username) - client.unbind(() => { - logSuccess({ - message: `Usuário ${this.username} alterou sua senha.`, - data: result, - tags: ['ldap'] + User.upsertUser(this.username, true).then(() => { + client.unbind(() => { + logSuccess({ + message: `Usuário ${this.username} alterou sua senha.`, + data: result, + tags: ['ldap'] + }) }) + resolve(User.login(this.username, newPassword)) }) - resolve(User.login(this.username, newPassword)) } } ) @@ -232,8 +233,8 @@ class User { * * @return {Object} */ - static async upsertUser(username) { - const DEBOUNCE_TIME_IN_SECONDS = 350 + static async upsertUser(username, forceAD = false) { + const DEBOUNCE_TIME_IN_SECONDS = 30 const oldUserData = await prisma.user.findUnique({ where: { sAMAccountName: username } @@ -242,6 +243,7 @@ class User { const now = new Date() if ( + !forceAD && oldUserData && differenceInSeconds( now, diff --git a/server/src/schemaDirectives/AuthDirective.js b/server/src/schemaDirectives/AuthDirective.js index 4ed1cd4..316aba5 100755 --- a/server/src/schemaDirectives/AuthDirective.js +++ b/server/src/schemaDirectives/AuthDirective.js @@ -20,9 +20,8 @@ class AuthDirective extends SchemaDirectiveVisitor { if (authorizationHeader) { const token = authorizationHeader.replace('Bearer ', '') - const { sAMAccountName, pwdLastSet } = validateToken( - authorizationHeader - ) + const { sAMAccountName, pwdLastSet } = + validateToken(authorizationHeader) const user = await new User(sAMAccountName).init() diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index 32567b5..c8ae1b2 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -6,7 +6,7 @@ const typeDefs = gql` basicUser(sAMAccountName: String!): User! @cacheControl(maxAge: 350) "The authenticated user" - me: User! @auth @cacheControl(maxAge: 30, scope: PRIVATE) + me: User! @auth "All users matching the criteria" users( diff --git a/web/src/mixins/Nav.js b/web/src/mixins/Nav.js index 69c1318..29c5477 100644 --- a/web/src/mixins/Nav.js +++ b/web/src/mixins/Nav.js @@ -11,19 +11,19 @@ export default { title: 'Dashboard', icon: 'mdi-view-dashboard-outline', route: { name: 'home' } + }, + { + title: 'Crachá Virtual', + icon: 'mdi-badge-account-horizontal', + route: { name: 'user-id' }, + role: 'servant' + }, + { + title: 'Alterar minha senha', + icon: 'mdi-form-textbox-password', + route: { name: 'update-password' } } // { - // title: 'Crachá Virtual', - // icon: 'mdi-badge-account-horizontal', - // route: { name: 'user-id' }, - // role: 'servant' - // }, - // { - // title: 'Alterar minha senha', - // icon: 'mdi-form-textbox-password', - // route: { name: 'update-password' } - // }, - // { // title: 'Meus dispositivos', // icon: 'mdi-cellphone-link', // route: { name: 'my-devices' },