text: /*  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;
  				}
  			]
  		}
  	});
  };
  