1 /* Copyright (c) 2019 AT&T Intellectual Property. #
\r
3 # Licensed under the Apache License, Version 2.0 (the "License"); #
\r
4 # you may not use this file except in compliance with the License. #
\r
5 # You may obtain a copy of the License at #
\r
7 # http://www.apache.org/licenses/LICENSE-2.0 #
\r
9 # Unless required by applicable law or agreed to in writing, software #
\r
10 # distributed under the License is distributed on an "AS IS" BASIS, #
\r
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
\r
12 # See the License for the specific language governing permissions and #
\r
13 # limitations under the License. #
\r
14 ##############################################################################*/
\r
17 const { authenticate } = require('@feathersjs/authentication').hooks;
\r
18 const filter = require('../../hooks/filters.js');
\r
19 const checkPermissions = require('feathers-permissions');
\r
20 const authManagement = require('../auth-management/notifier');
\r
21 const errors = require('@feathersjs/errors');
\r
24 hashPassword, protect
\r
25 } = require('@feathersjs/authentication-local').hooks;
\r
26 const { iff, disallow } = require('feathers-hooks-common');
\r
27 const verifyHooks = require('feathers-authentication-management').hooks;
\r
28 const skip = require('@feathersjs/feathers').SKIP;
\r
30 const { permissions, limitFields } = require('../../hooks/permissions/permissions');
\r
36 authenticate('jwt'),
\r
37 permissions('users'),
\r
39 if(!context.params.user){
\r
45 authenticate('jwt'),
\r
46 permissions('users'),
\r
48 if(!context.params.user){
\r
53 create: [hashPassword(),
\r
55 return verifyHooks.addVerification(context.app.get('base-path') + 'authManagement')(context);
\r
57 function (context) {
\r
58 context.data.enabled = false;
\r
59 // await context.app.services[context.app.get('base-path') + 'groups']
\r
62 // groupName: "Public"
\r
65 // .then( result => {
\r
67 // await context.app.services[context.app.get('base-path') + 'groups']
\r
69 // _id : result._id,
\r
70 // $push: { members: { userId : user._id, roles: ["user"]}}
\r
74 context.data.groups = [
\r
76 groupId: '5bdb2bdbd6b0d1f97953fbd7',
\r
87 authenticate('jwt'),
\r
88 permissions('users')
\r
94 authenticate('jwt'),
\r
95 iff(context => context.params.provider === undefined).else(
\r
96 permissions('users'),
\r
97 async function(context){
\r
98 if(context.data.enabled){
\r
99 await this.get(context.id)
\r
100 .then(function(user) {
\r
102 context.sendEmail = true;
\r
110 // .iff(checkPermissions({
\r
111 // roles: [ 'admin' ]
\r
113 // .else(commonHooks.iff(
\r
114 // commonHooks.isProvider('external'),
\r
115 // commonHooks.preventChanges(
\r
119 // 'verifyShortToken',
\r
120 // 'verifyExpires',
\r
121 // 'verifyChanges',
\r
123 // 'resetShortToken',
\r
129 authenticate('jwt'),
\r
130 permissions('users')
\r
136 // Make sure the password field is never sent to the client
\r
137 // Always must be the last hook
\r
138 protect('password'),
\r
140 find: [iff(context => context.params.provider === undefined).else(limitFields())],
\r
141 get: [iff(context => context.params.provider === undefined).else(limitFields())],
\r
144 authManagement(context.app).notifier('resendVerifySignup', context.result);
\r
146 function (context) {
\r
148 // await context.app.services[context.app.get('base-path') + 'groups']
\r
149 // .get(context.data.parentGroupId, context.params)
\r
150 // .then( result => {
\r
154 verifyHooks.removeVerification()
\r
156 update: [iff(context => context.params.provider === undefined).else(limitFields())],
\r
157 patch: [iff(context => context.params.provider === undefined).else(limitFields()),
\r
159 let data = context['data']
\r
160 if(data && context.sendEmail){
\r
161 let enabled = data['enabled'];
\r
163 authManagement(context.app).notifier('sendApprovalNotification', context.result)
\r
169 remove: [iff(context => context.params.provider === undefined).else(limitFields())]
\r