feat(security): add security setup (#1565)

This commit is contained in:
Dmitry Nehaychik 2018-02-23 15:07:06 +03:00 committed by GitHub
parent f4cdf4ab22
commit 480a90b8c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 1 deletions

View file

@ -1,6 +1,8 @@
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { NbAuthModule, NbDummyAuthProvider } from '@nebular/auth'; import { NbAuthModule, NbDummyAuthProvider } from '@nebular/auth';
import { NbSecurityModule, NbRoleProvider } from '@nebular/security';
import { of as observableOf } from 'rxjs/observable/of';
import { throwIfAlreadyLoaded } from './module-import-guard'; import { throwIfAlreadyLoaded } from './module-import-guard';
import { DataModule } from './data/data.module'; import { DataModule } from './data/data.module';
@ -21,6 +23,27 @@ const NB_CORE_PROVIDERS = [
}, },
}, },
}).providers, }).providers,
NbSecurityModule.forRoot({
accessControl: {
guest: {
view: '*',
},
user: {
parent: 'guest',
create: '*',
edit: '*',
remove: '*',
},
},
}).providers,
{
provide: NbRoleProvider,
useValue: {
getRole: () => {
return observableOf('guest'); // here you could provide any role based on any auth flow
},
},
},
AnalyticsService, AnalyticsService,
]; ];

View file

@ -14,7 +14,7 @@
[class.right]="position === 'normal'" [class.right]="position === 'normal'"
[class.left]="position === 'inverse'"> [class.left]="position === 'inverse'">
<nb-action icon="nb-grid-b" class="toggle-layout" (click)="toggleSettings()"></nb-action> <nb-action icon="nb-grid-b" class="toggle-layout" (click)="toggleSettings()"></nb-action>
<nb-action> <nb-action *nbIsGranted="['view', 'user']" >
<nb-user [nbContextMenu]="userMenu" [name]="user?.name" [picture]="user?.picture"></nb-user> <nb-user [nbContextMenu]="userMenu" [name]="user?.name" [picture]="user?.picture"></nb-user>
</nb-action> </nb-action>
<nb-action class="control-item" disabled icon="nb-notifications"></nb-action> <nb-action class="control-item" disabled icon="nb-notifications"></nb-action>

View file

@ -19,6 +19,8 @@ import {
NbContextMenuModule, NbContextMenuModule,
} from '@nebular/theme'; } from '@nebular/theme';
import { NbSecurityModule } from '@nebular/security';
import { import {
FooterComponent, FooterComponent,
HeaderComponent, HeaderComponent,
@ -53,6 +55,7 @@ const NB_MODULES = [
NbPopoverModule, NbPopoverModule,
NbContextMenuModule, NbContextMenuModule,
NgbModule, NgbModule,
NbSecurityModule, // *nbIsGranted directive
]; ];
const COMPONENTS = [ const COMPONENTS = [

View file

@ -1,4 +1,5 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { NgxEchartsModule } from 'ngx-echarts'; import { NgxEchartsModule } from 'ngx-echarts';
import { ThemeModule } from '../../@theme/theme.module'; import { ThemeModule } from '../../@theme/theme.module';