X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=it%2Fotf.git;a=blobdiff_plain;f=otf-frontend%2Fserver%2Fsrc%2Ffeathers%2Fauthentication.js;fp=otf-frontend%2Fserver%2Fsrc%2Ffeathers%2Fauthentication.js;h=2a0efc99368000a24dbef2495bf7e0eaf5e6e5e9;hp=0000000000000000000000000000000000000000;hb=14f6f95c84a4a1fa8774190db4a03fd0214ec55f;hpb=f49bd1efeaaddd4891c1f329b18d8cfb28b3e75b diff --git a/otf-frontend/server/src/feathers/authentication.js b/otf-frontend/server/src/feathers/authentication.js new file mode 100644 index 0000000..2a0efc9 --- /dev/null +++ b/otf-frontend/server/src/feathers/authentication.js @@ -0,0 +1,69 @@ +/* Copyright (c) 2019 AT&T Intellectual Property. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +##############################################################################*/ + + +const authentication = require('@feathersjs/authentication'); +const jwt = require('@feathersjs/authentication-jwt'); +const local = require('@feathersjs/authentication-local'); +const { permissions } = require('./hooks/permissions/permissions'); +// const { hashPassword, protect } = require('@feathersjs/authentication-local').hooks; + +module.exports = function (app) { + const config = app.get('authentication'); + + // Set up authentication with the secret + app.configure(authentication(config)); + app.configure(jwt()); + app.configure(local()); + + // The `authentication` service is used to create a JWT. + // The before `create` hook registers strategies that can be used + // to create a new valid JWT (e.g. local or oauth2) + app.service(config.path).hooks({ + before: { + create: [ + function(context){ + //console.log(context.data) + // console.log('authing'); + }, + authentication.hooks.authenticate(config.strategies), + permissions('authentication') + ], + remove: [ + authentication.hooks.authenticate('jwt') + ] + }, + after: { + create: [ + // Send the user profile back with access token + async function (context) { + if (!context.params.user.enabled) { + context.result.accessToken = null; + } + + context.result['user'] = context.params.user; + + //Send Back the users rules + if(context.params.ability){ + context.result.user['rules'] = context.params.ability.rules; + } + + delete context.result.user.password; + return context; + } + ] + } + }); +};