11 Haziran 2020 Perşembe

JHipster-9 (Yeni yetki(Role) oluşturma ve ekranları oluşturlan yetkiye bağlama)

Herkese merhaba,
bu yazımda JHipster ile yeni bir role'ün nasıl oluşturulacağını paylaşacağım.
Daha önceki yazılarımda paylaştığım üzere JHipster projesi varsayılan olarak ROLE_ADMIN ve ROLE_USER şeklinde tanımlı iki rolle oluşmaktadır.
Bunlarn dışında bir yetkiye ihtiyacınız olduğunda yetkinin nasıl oluşturlacağını ve ekranların bu yetki ile nasıl açılacağını aşağıdaki adımları inceleyerek öğrenebilirsiniz.

Yazının devamında student adında bir entity oluşturulacaktır. Yine student ekranlarını  bağlamak için  "ROLE_MANAGER" diye bir yetki oluştrulup devam edilecektir. Frontend tarafında angularjs kullanılmıştır.

ilk olarak jhipster projesine giderek student adında bir entity oluşturun.

$ jhipster entity student


Wizard üzerindeki soruları aşağıdaki şekilde yanıtlayın.
? Do you want to add a field to your entity? Yes
? What is the name of your field? firstname
? What is the type of your field? String
? Do you want to add validation rules to your field? No
? Do you want to add a field to your entity? No
? Do you want to add a relationship to another entity? No

================= Student =================
Fields
firstname (String)

? Do you want to use separate service class for your business logic? No, the REST controller should use the repository directly
? Is this entity read-only? No
? Do you want pagination on your entity? No

 

Bu adımları tamamladıktan sonra student ekranları ROLE_USER yetkisine sahip kullanıcılara gösterilecektir. Şimdi bu yetkilendirmeyi ROLE_MANAGER'a çekmek için ilk olarak frontend tarafındaki  authority.constants.ts dosyasına yeni role'ü aşağıdaki şekilde ekleyin.

MANAGER = 'ROLE_MANAGER', 

 

Dosyasının son hali aşağıdaki gibi olacaktır.


export enum Authority {
ADMIN = 'ROLE_ADMIN',
USER = 'ROLE_USER',
MANAGER = 'ROLE_MANAGER',

} 


 


student.route.ts dosyasında authorities alanı   authorities: [Authority.MANAGER] şeklinde güncelleyin.

student.route.ts dosyasının son hali aşağıdaki gibi olacaktır.


export const studentRoute: Routes = [
{
path: '',
component: StudentComponent,
data: {
authorities: [Authority.MANAGER],
pageTitle: 'hipsterAngularApp.student.home.title',
},
canActivate: [UserRouteAccessService],
},
{
path: ':id/view',
component: StudentDetailComponent,
resolve: {
student: StudentResolve,
},
data: {
authorities: [Authority.MANAGER],
pageTitle: 'hipsterAngularApp.student.home.title',
},
canActivate: [UserRouteAccessService],
},
{
path: 'new',
component: StudentUpdateComponent,
resolve: {
student: StudentResolve,
},
data: {
authorities: [Authority.MANAGER],
pageTitle: 'hipsterAngularApp.student.home.title',
},
canActivate: [UserRouteAccessService],
},
{
path: ':id/edit',
component: StudentUpdateComponent,
resolve: {
student: StudentResolve,
},
data: {
authorities: [Authority.MANAGER],
pageTitle: 'hipsterAngularApp.student.home.title',
},
canActivate: [UserRouteAccessService],
},

]; 


 

backend tarafında ROLE_MANAGER yetkisini eklemek için AuthoritiesConstants.java dosyasına aşağıdaki satırı ekleyin.

public static final String MANAGER = "ROLE_MANAGER"; 

 

Dosyanın son hali aşağıdaki gibi olmaldır.


public final class AuthoritiesConstants {

public static final String ADMIN = "ROLE_ADMIN";

public static final String USER = "ROLE_USER";

public static final String ANONYMOUS = "ROLE_ANONYMOUS";

public static final String MANAGER = "ROLE_MANAGER";

private AuthoritiesConstants() {
}
}

 

 

Liquebase changeset ler ile role'ün veritabanında oluşması için authority.csv dosyasına ROLE_MANAGER'ı aşağıdaki şekilde ekleyin.


name
ROLE_ADMIN
ROLE_USER
ROLE_MANAGER

 

 

 StudentResource dosyasına giderek buradaki tüm public methodların üstüne aşağıdaki satırı ekleyin.

@PreAuthorize("hasAuthority('ROLE_MANAGER')") 

 

Uygulamayı restart ettiken sonra browser üzerinden aşağıdaki adrese giderek http://localhost:9000/account/register adresinden yeni bir kullanıcı kaydı oluşturun. 
daha sonra admin kullanıcısıyla giriş yaparak http://localhost:9000/admin/user-management sayfasına gidin.
Olulşturduğunuz kullanıcıyı editleyerek status'ünü aktif'e çekip bu kullanıcıyı  ROLE_MANAGER olarak yetkilendirin.

Kullancıyı yetkilendirdikten  sonra signuout olarak yeni kullanıcyla giriş yapın. Browser üzerinden http://localhost:9000/student adresine gittiğinizde ROLE_MANAGER yetkisine sahip kullanıcıyla bu ekranların erişildiğini göreceksiniz. 

Siseme "user" kullanıcısyla login olduktan sonra bu ekranlar yetkilendiremeye takılarak açılmayacaktır.

Hiç yorum yok:

Yorum Gönderme