OrchestraHCM de Rol Harici Karmaşık Yetkilendirme İhtiyaçlarının Karşılanması

Müşterilerden bazı durumlar da rol ve standart yetkilendirmeler haricinde karmaşık yetkilendirme talepleri olabilir. Örnek olarak bu çalışan alt grupları bu linke erişemesin, sadece A departmanı yöneticileri linke erişebilsin, ya da sadece GM e GMY ler bu uygulama ekranına girebilsin gibi, bu tip istisnaları OrchestraHCM ile kolaylıkla yapabilirsiniz.
Öncelikle uygulamanın rol tanımlamasında bir değişiklik yapmaya gerek yoktur. Örnek olarak müşteriniz 02 çalışan alt gruplarının uygulamaya girmesini istemiyor ise bu durumda uygulamanın rolünün EMPLOYEE olarak bırakılması gerekir.
Adım 1 : Uygulama Koduna Yetki Kontrolü Eklemek
Öncelikli olarak bu tip talepler için öncelikle uygulama kodunun GET kısmına aşağıdaki gibi bir kod eklemeniz gerekir;
public void Execute()
{
OrcScreen orcScreen = this.Container.ScreenData;
// if (this.Container.UserName == "recepk@hrsp.com.tr")
orcScreen.EnableLog = true;
if (orcScreen.ScreenEvent == ScreenEvent.Get)
{
//Önce çalışan nesnesini oluştur
Employee emp = DBManager.GetEmployee(Container.Pernr);
//Sonra 05 ve 02 çalışan alt grupları iş akışı yeni başlatılıyor ise yetki eksik mesajı ver.
if((emp.Persk == "05" || emp.Persk == "02") && orcScreen.WfId == 0)
{
orcScreen.UnAuthorized = true;
//
//Bu mesaj günlüklere kaydedilmesi için opsiyoneldir,
DBManager.WriteErrorLog(Container.UserName + " tried to start app " + orcScreen.UICode);
this.Container.TempResult = orcScreen;
return;
}
Get(orcScreen);
}
}
Adım 2 : TILE Menü Kodunda Uygulamaların Gizlenmesini Sağlamak
Uygulama linkini içeren menü varsa onu da yukardakine benzer şekilde kapatabilirsiniz. Linkin görünmesi kullanıcıların kafasını karıştırabilir, uygulama yetkilerinin olduklarını düşünebilirler.
Menüden kaldırmak için uygulamanın olduğu menü koduna bularak aşağıdaki gibi bir kod yazabilirsiniz;
public void Execute()
{
OrcScreen orcScreen = this.Container.ScreenData;
// if (this.Container.UserName == "recepk@hrsp.com.tr")
orcScreen.EnableLog = true;
if (orcScreen.ScreenEvent == ScreenEvent.Get)
{
//Önce çalışan nesnesini oluştur
Employee emp = DBManager.GetEmployee(Container.Pernr);
//Sonra 05 ve 02 çalışan alt grupları iş akışı yeni başlatılıyor ise yetki eksik mesajı ver.
if((emp.Persk == "05" || emp.Persk == "02") && orcScreen.WfId == 0)
{
orcScreen.UnAuthorized = true;
//
//Bu mesaj günlüklere kaydedilmesi için opsiyoneldir,
DBManager.WriteErrorLog(Container.UserName + " tried to start app " + orcScreen.UICode);
this.Container.TempResult = orcScreen;
return;
}
Get(orcScreen);
}
}
Sonuç
Yukarda anlattığım şekilde karmaşık yetki ihtiyaçlarını açık kaynak kodlu mantık ile çözebilirsiniz. Bu sayede kod yazılan kısımlara dilediğiniz not ve yorumları da yazmanız mümkündür.
Bu talebin farklı çözümleri de tabi ki var, örnek olarak bu istisna kullanıcılara ek bir rol yaratıp, bu rolü kullanıcılarına ve uygulamaya da bağlayabilirsiniz. Bu alternatif çözümde kod yazmanıza gerek olmaz ama veri düzeltmeleri vs. yapmanız gerekir.
Burada yaptığınız düzenleme hem web hem de mobil uygulama da çalışacaktır. Mobil için ek bir düzeltme yapmanıza gerek yoktur.