minaroid-sharedmodules v1.0.8
APP-Utilities
Common Library for any looback4 application
Usage
you should put repo url in package config int he following format
"sdkcommon": "git+https://bitbucket.services.tra.gov.ae/scm/ei/app-utilities.git"
then use the library content by import what you need in the consumer
to build the library it self after modification , please Run the following command , it will create the dist folder and should be pushed to the master branch :
tsc
Content
Helpers
contains common helper classes (enums,error-catcher ,log-message ,message-queue)
Interceptors
contains looback 4 interceptor implementation to log requests and errors
Authentication & Authorization (For Consumers)
Package Installation: "@loopback/authentication": "^3.2.4", "@loopback/authorization": "^0.4.6", "passport": "^0.4.1", "passport-http": "^0.3.0",
Index.ts
app.component(AuthenticationComponent);
// register your custom authentication strategy registerAuthenticationStrategy(app, BasicAuthenticationStrategy);
app .bind('authorizationProviders.my-provider') .toProvider(MyAuthorizationProvider) .tag(AuthorizationTags.AUTHORIZER);
app.component(AuthorizationComponent);
Sequesnce.ts
@inject(AuthenticationBindings.AUTH_ACTION) protected authenticateRequest: AuthenticateFn,
const route = this.findRoute(request);
//call authentication action
await this.authenticateRequest(request);
} catch (error) {
if (
error.code === AUTHENTICATION_STRATEGY_NOT_FOUND ||
error.code === USER_PROFILE_NOT_FOUND
) {
Object.assign(error, { statusCode: 401 /* Unauthorized */ });
}
this.reject(context, error);
}
Controller:
@authenticate('basic') @authorize({ allowedRoles: 'strategy' })