2.1.1.2 BFF Security Modülü#
Eksen altyapısı ile geliştirilen angular tabanlı uygulamalara güvenlikle ilgili temel sınıf, direktif, guard, interceptor ve servisler sunan modüldür.
BFF Security modülünün önemli bir avantajı Keysis ürünü ile entegre çalışmasıdır. Keysis üzerindeki yetkilendirme tanımları bu modül ile sağlanan bileşenlerle kolay bir şekilde kullanılabilir.
BFF Security altındaki alt modüller şunlardır:
Directive#
HvlIfAllGrantedDirective#
Bu direktif (hvlIfAllGranted) kullanıcının parametre ile verilen yetkilerin tamamına sahip olması durumunda render edilmesini sağlar. Aşağıdaki örneği inceleyiniz:
<hvl-form-item *hvlIfAllGranted="['mailYetki', 'mailGrupYetki']" key="email" label="email">
<input id="email" type="email" formControlName="email" pInputText />
</hvl-form-item>
HvlIfAnyGrantedDirective#
Bu direktif (hvlIfAnyGranted) kullanıcının parametre ile verilen yetkilerin en az birine sahip olması durumunda render edilmesini sağlar. Aşağıdaki örneği inceleyiniz:
<hvl-form-item *hvlIfAnyGranted="['mailYetki', 'mailGrupYetki']" key="email" label="email">
<input id="email" type="email" formControlName="email" pInputText />
</hvl-form-item>
HvlIfNotGrantedDirective#
Bu direktif (hvlIfNotGranted) kullanıcının parametre ile verilen yetkilerin hiçbirine sahip olmaması durumunda render edilmesini sağlar. Bu direktif HvlIfAnyGrantedDirective direktifinin tersidir. Genellikle kullanıcıya yetkisi olmadığı durumda bununla ilgili bilgi vermek için kullanılır. Aşağıdaki örneği inceleyiniz:
Yukarıdaki örnekte div elementi kullanıcı mailYetki ve mailGrupYetki yetkilerinin hiçbirine sahip değilse ekranda görünecektir.Guard#
HvlAuthenticatedGuard#
Bu guard routing tanımlarında sadece login olmuş kullanıcıların görmesi istenilen kısımları belirtmek için kullanılır. Aşağıdaki örneği inceleyiniz:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HvlAuthenticatedGuard, HvlAuthorizationGuard } from '@hvlng/framework-bff/security';
export const routes: Routes = [
{
path: 'egitim-islemleri',
canActivate: [HvlAuthenticatedGuard],
loadChildren: () => import('projects/egitim/src/app/egitim-agg.module').then((m) => m.EgitimAggModule),
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class EgitimAllAggRoutingModule {}
HvlAuthorizationGuard#
Bu guard routing tanımlarında sadece belirtilen yetkilere sahip kullanıcıların görmesi istenilen kısımları belirtmek için kullanılır. Aşağıdaki örneği inceleyiniz:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HvlAuthenticatedGuard, HvlAuthorizationGuard } from '@hvlng/framework-bff/security';
export const routes: Routes = [
{
path: 'egitim-islemleri',
canActivate: [HvlAuthenticatedGuard, HvlAuthorizationGuard],
data: {
authorities: ['egitim'],
},
loadChildren: () => import('projects/egitim/src/app/egitim-agg.module').then((m) => m.EgitimAggModule),
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class EgitimAllAggRoutingModule {}
Interceptor#
Angular'da interceptor'lar istenilen bazı işlerde araya girerek işin öncesinde ve/veya sonrasında işe müdahil olarak ekstra işlemler yapılabilmesine olanak sağlar. Genellikle http isteklerinin arasına girilerek yetki işlemleri, parametre değişikliği yada hata yakalayıp tek bir yerde değerlendirme gibi işlemler yapılır.
BFF modülünde sunulan interceptor'lar aşağıda açıklanmıştır.
HvlSecurityInterceptor#
HvlSecurityInterceptor bir http interceptor'dür. Http isteklerinde sadece sunucudan hata alınan durumlarda istek sonrasında araya girerek eğer hata yetkilendirme ile ilgili ise kullanıcıyı login sayfasına yönlendirir. Bu davranışın etkin olması için core.security.enabled ayarının true olması gerekmektedir.
HvlSecurityInterceptor'ın bir modülde kullanımı aşağıda örneklenmiştir.
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { HvlSecurityInterceptor } from '@hvlng/framework-bff/security';
@NgModule({
declarations: [ ... ],
imports: [ ... ],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: HvlSecurityInterceptor, multi: true },
...
]
exports: [ ... ],
})
export class MyAppModule {}
HvlTenantInterceptor#
HvlTenantInterceptor bir http interceptor'dür. Multi tenant çalışacak uygulamalarda kullanımı uygundur. Kullanıcının tenant-id bilgisini her istek için istek url'ine parametre olarak ekleyerek istek bazında tenant bilgisinin sunucuya iletilmesini sağlar.
HvlTenantInterceptor'ın bir modülde kullanımı aşağıda örneklenmiştir.
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { HvlTenantInterceptor } from '@hvlng/framework-bff/security';
@NgModule({
declarations: [ ... ],
imports: [ ... ],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: HvlTenantInterceptor, multi: true },
...
]
exports: [ ... ],
})
export class MyAppModule {}
#
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { HvlTenantInterceptor } from '@hvlng/framework-bff/security';
@NgModule({
declarations: [ ... ],
imports: [ ... ],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: HvlTenantInterceptor, multi: true },
...
]
exports: [ ... ],
})
export class MyAppModule {}
Service#
BFF Security modülünde sunulan servisler aşağıda açıklanmıştır.
HvlAuthAuthenticationRestService#
Keysis backend'i ile uyumlu olarak login, logout gibi metodlar sunan servistir. Bu servisin kullanımı ile ekranlar (login ekranı gibi) Theme paketinde yer almaktadır.
HvlAuthVerificationRestService#
Keysis backend'i ile uyumlu olarak Captcha gibi ikinci seviye doğrulama işlemleri için metodlar sunan servistir. Bu servisin kullanımı ile ekranlar (captcha ekranı gibi) Theme paketinde yer almaktadır.
HvlAuthzEventLogRestService#
Keysis backend'i ile uyumlu olarak kullanıcıların başarılı yada başarısız sisteme giriş kayıtları ile ilgili metodlar sunan servistir. Metodlar aşağıda açıklanmıştır:
Metod | Açıklama |
---|---|
pageLoginHistoryByCurrentUser | Oturum sahibi kullanıcı için giriş kayıtlarının sayfaları olarak getirilmesini sağlar |
failedLoginExistByCurrentUser | Oturum sahibi kullanıcı için başarısız giriş denemesi olup olmadığını döner |
queryList | Giriş kayıtları sorgulanmasını sağlar |
queryPage | Giriş kayıtlarının sayfalı olarak sorgulanmasını sağlar |
HvlAuthzRegistrationRestService#
Keysis backend'i ile uyumlu olarak kullanıcı kayıt işlemi ile ilgili metodlar sunan servistir. Bu servisin kullanımı ile ekranlar Theme paketinde yer almaktadır.
HvlAuthzSessionRestService#
Eksen backend'leri ile uyumlu olarak login süreci tamamlanmış kullanıcının oturum bilgilerinin alınması için aşağıdaki metodları sunan servistir. Bu servisin kullanımı ile ekranlar (profil seçim ekranı gibi) Theme paketinde yer almaktadır.
Metod | Açıklama |
---|---|
fillSessionWithAuthorityByProfile | Oturum bilgilerinin verilen profil için alınmaını sağlar |
fillWithAuthority | Oturum bilgilerinin alınmaını sağlar |
HvlAuthzTenantRestService#
Eksen backend'leri ile uyumlu olarak tenant listesinin alınması için metod sunan servistir.
HvlAuthzUserDetailRestService#
Keysis backend'leri ile uyumlu olarak kullanıcı tipi listesinin alınması için metod sunan servistir.
HvlAuthzUserPasswordPolicyRestService#
Keysis backend'leri ile uyumlu olarak kullanıcı parola politikası ile ilgili bilgi alınması için metod sunan servistir.
HvlAuthzUserRestService#
Keysis backend'leri ile uyumlu olarak kullanıcı şifre değişimi ile ilgili metodlar sunan servistir.
HvlSecurityService#
Güvenlikle ilgili genel metodlar sunan servistir. Oturumu açmış olan kullanıcı, kullanıcının yetkileri ile ilgili bilgilere erişmek gerektiğinde kullanılabilir. Sağlanan servisler aşağıda açıklanmıştır.
Metod | Açıklama |
---|---|
isSecurityActive | Güvenlik açık/değil bilgisini döner |
user | Oturumdaki kullanıcı nesnesini döner |
hasAuthority | Parametre ile verilen yetkiye oturum açmış kullanıcının yetkisi olup/olmadığı bilgisini döner |
isAuthenticatedUser | Oturumun sisteme giriş yapmış bir kullanıcıya ait olduğunu döner |
HvlSessionRestService#
Eksen backend'leri ile uyumlu olarak oturum yönetimi ile ilgili metodlar sunan servistir. Bu metodlar aşağıda açıklanmıştır.
Metod | Açıklama |
---|---|
closeByUser | Parametre ile alınan id bilgisi üzerinden oturum kapatmayı sağlar |
closeAllByUser | Parametre ile alınan id bilgisi üzerinden kullanıcıya ait tüm oturumların kapatılmasını sağlar |
closeAllByUsername | Parametre ile alınan kullanıcı kodu üzerinden kullanıcıya ait tüm oturumların kapatılmasını sağlar |
closeAllSessions | Parametre ile alınan oturum listeki tüm oturumların kapatılmasını sağlar |
queryPageByUser | Oturum bilgileri üzerinden sorgulama yapılmasını sağlar |
queryPage | Oturum bilgileri üzerinden sayfalı sorgulama yapılmasını sağlar |
countByCurrentUser | Aktif kullanıcının oturum sayısını döner |
HvlSystemSettingRestService#
Eksen altyapısı bileşenleriden setting'e ait backend servisleri üzerinden işlem yapılabilmesi için metodlar sunan servistir. Bu metodlar aşağıda açıklanmıştır.
Metod | Açıklama |
---|---|
getBooleanSettingByCode | Ayar kodu üzerinden boolean ayar değerinin alınmasını sağlar |
getNumberSettingByCode | Ayar kodu üzerinden numerik ayar değerinin alınmasını sağlar |
getStringSettingByCode | Ayar kodu üzerinden string ayar değerinin alınmasını sağlar |
getNumberSettingByCodeAndTenant | Ayar kodu ve tenant parametre üzerinden numerik ayar değerinin alınmasını sağlar |
getBooleanSettingByCodeAndTenant | Ayar kode ve tenant parametre üzerinden boolean ayar değerinin alınmasını sağlar |
getStringSettingByCodeAndTenant | Ayar kode ve tenant parametre üzerinden string ayar değerinin alınmasını sağlar |
getSettingListByType | typeId parametresi üzerinden ayarların alınmasını sağlar |
update | Ayar güncellemesi yapılmasını sağlar |
Model#
Bu paket bff security modülleri tarafından sağlanan servis ve bileşenler tarafından kullanılan modelleri içerir.
Bu modelleri ve içerdiği alanları IDE'niz üzerinden inceleyebilirsiniz.
DB#
Bu paket html 5 ile gelen indexed-db desteğini kullanarak kullanıcı, yetki ve oturumla ilgili bilgileri veritabanında saklanmasını sağlayan sınıflar içerir. Bu paketteki işlevler dışarıya açık değildir.