From 110974cce4b3d59ba53c5acbfb512a5fe135d8fa Mon Sep 17 00:00:00 2001 From: Christophe Maudoux Date: Fri, 12 Feb 2021 22:27:02 +0100 Subject: [PATCH] Display rules (#2458) --- .../NG/Portal/Plugins/CheckDevOps.pm | 55 ++++++++++++++----- .../site/htdocs/static/languages/ar.json | 2 + .../site/htdocs/static/languages/de.json | 2 + .../site/htdocs/static/languages/en.json | 2 + .../site/htdocs/static/languages/es.json | 2 + .../site/htdocs/static/languages/fi.json | 2 + .../site/htdocs/static/languages/fr.json | 2 + .../site/htdocs/static/languages/it.json | 2 + .../site/htdocs/static/languages/nl.json | 2 + .../site/htdocs/static/languages/pl.json | 2 + .../site/htdocs/static/languages/pt.json | 2 + .../site/htdocs/static/languages/ro.json | 2 + .../site/htdocs/static/languages/tr.json | 2 + .../site/htdocs/static/languages/vi.json | 2 + .../site/htdocs/static/languages/zh.json | 2 + .../site/htdocs/static/languages/zh_TW.json | 2 + .../site/templates/bootstrap/checkdevops.tpl | 16 +++++- 17 files changed, 87 insertions(+), 14 deletions(-) diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckDevOps.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckDevOps.pm index ef23239db..add2a2d3f 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckDevOps.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckDevOps.pm @@ -2,7 +2,7 @@ package Lemonldap::NG::Portal::Plugins::CheckDevOps; use strict; use Mouse; -use JSON qw(from_json to_json); +use JSON qw(from_json); use Lemonldap::NG::Portal::Main::Constants qw( PE_OK PE_ERROR @@ -66,9 +66,9 @@ sub display { } sub run { - my ( $self, $req ) = @_; - my ( $msg, $alert ); - my $headers = []; + my ( $self, $req ) = @_; + my ( $headers, $rules ) = ( [], [] ); + my ( $msg, $alert ); # Check token if ( $self->ottRule->( $req, {} ) ) { @@ -88,6 +88,7 @@ sub run { $token = $self->ott->createToken(); } + # Prepare form my $params = { PORTAL => $self->conf->{portal}, MAIN_LOGO => $self->conf->{portalMainLogo}, @@ -108,29 +109,56 @@ sub run { my $json = eval { from_json( $req->param('checkDevOpsFile') ) }; if ($@) { + + # Prepare form params $msg = 'PE' . PE_BAD_DEVOPS_FILE; $alert = 'alert-danger'; $json = ''; $self->userLogger->error("CheckDevOps: bad 'rules.json' file ($@)"); } else { - my $vhost = $self->p->HANDLER->resolveAlias($req); my $handler = $self->p->HANDLER; + my $vhost = $handler->resolveAlias($req); - # Compile headers & rules - $handler->headersInit( undef, { $vhost => $json->{headers} } ); - $handler->locationRulesInit( undef, { $vhost => $json->{rules} } ); + # Removed forbidden session attributes + foreach my $v ( split /\s+/, $self->conf->{hiddenAttributes} ) { + foreach ( keys %{ $json->{headers} } ) { + if ( $json->{headers}->{$_} eq '$' . $v ) { + delete $json->{headers}->{$_}; + my $user = $req->userData->{ $self->conf->{whatToTrace} }; + $self->userLogger->warn( + "CheckDevOps: $user try to retrieve hidden attribute $v" + ); + } + } + } + + # Compile headers + $handler->headersInit( undef, { $vhost => $json->{headers} } ); $headers = $handler->checkHeaders( $req, $req->userData ); - my $list = join ', ', map { "$_->{key}:$_->{value}" } @$headers; - $self->logger->debug("CheckDevOps compiled headers: $list"); + my $headers_list = join ', ', map { "$_->{key}:$_->{value}" } @$headers; + $self->logger->debug("CheckDevOps compiled headers: $headers_list"); - # Prepare form + # Compile rules + @$rules = map { + my ( $sub, $flag ) = $handler->conditionSub( $json->{rules}->{$_} ); + { + uri => $_, + access => $sub->( $req, $req->userData ) + ? 'allowed' + : 'forbidden' + } + } keys %{ $json->{rules} }; + my $rules_list = join ', ', map { "$_->{uri}:$_->{access}" } @$rules; + $self->logger->debug("CheckDevOps compiled rules: $rules_list"); + + # Prepare form params $msg = 'checkDevOps'; $alert = 'alert-info'; - $json = $req->param('checkDevOpsFile'); - $self->logger->debug("CheckDevOps provided file: $json"); + $json = JSON->new->ascii->pretty->encode($json); # Pretty print } + # Prepare form my $params = { PORTAL => $self->conf->{portal}, MAIN_LOGO => $self->conf->{portalMainLogo}, @@ -140,6 +168,7 @@ sub run { ALERTE => $alert, FILE => $json, HEADERS => $headers, + RULES => $rules, TOKEN => ( $self->ottRule->( $req, {} ) ? $self->ott->createToken() diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/ar.json b/lemonldap-ng-portal/site/htdocs/static/languages/ar.json index b4e49c7df..57d926f9c 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/ar.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/ar.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"المصادقات المتبقية، غير كلمة المرور الخاصة بك!", "proxyError":"بوابة سيئة: غير قادر على الانضمام لالخادم البعيد", "pwd":"كلمة المرور", @@ -268,6 +269,7 @@ "resetPwd":"إعادة تعيين كلمة المرور الخاصة بي", "rest2f":"Verification code", "rightsReloadNeedsLogout":" إعادة تحميل الحقوق تحتاج إلى تسجيل الخروج وتسجيل الدخول مرة أخرى", +"rules":"RULES", "scope":"نطاق", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/de.json b/lemonldap-ng-portal/site/htdocs/static/languages/de.json index aea4d0fa1..e89ddad98 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/de.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/de.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"verbleibende Authentifizierungen, bitte Passwort ändern !", "proxyError":"Bad gateway: Der Remote-Server kann nicht verbunden werden", "pwd":"Passwort", @@ -268,6 +269,7 @@ "resetPwd":"Mein Passwort zurücksetzen", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Zum Neuladen der Rechte musst du dich ab- und wieder anmelden", +"rules":"RULES", "scope":"Scope", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/en.json b/lemonldap-ng-portal/site/htdocs/static/languages/en.json index cc6f95787..6e71977b2 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/en.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/en.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"authentications remaining, change your password!", "proxyError":"Bad gateway: unable to join remote server", "pwd":"Password", @@ -268,6 +269,7 @@ "resetPwd":"Reset my password", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again", +"rules":"RULES", "scope":"Scope", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/es.json b/lemonldap-ng-portal/site/htdocs/static/languages/es.json index c9c570c1d..3bd1041fe 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/es.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/es.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"autenticaciones restantes, ¡cambie su contraseña!.", "proxyError":"Puerta de enlace no válida: servidor remoto inalcanzable", "pwd":"Contraseña", @@ -268,6 +269,7 @@ "resetPwd":"Reiniciar mi contraseña", "rest2f":"Código de verificación", "rightsReloadNeedsLogout":"La recarga de derechos necesita desconectarse y conectarse de nuevo", +"rules":"RULES", "scope":"Alcance", "search":"Buscar", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/fi.json b/lemonldap-ng-portal/site/htdocs/static/languages/fi.json index d280e87a7..6c4e309bd 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/fi.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/fi.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"authentications remaining, change your password!", "proxyError":"Bad gateway: unable to join remote server", "pwd":"Salasana", @@ -268,6 +269,7 @@ "resetPwd":"Palauta salasanani?", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again", +"rules":"RULES", "scope":"Scope", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/fr.json b/lemonldap-ng-portal/site/htdocs/static/languages/fr.json index cec75c32d..a2a3beba6 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/fr.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/fr.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimum de caractères spéciaux :", "passwordPolicyNone":"Vous êtes libre de choisir votre mot de passe !", "passwordPolicySpecialChar":"Caractères spéciaux autorisés :", +"pasteHere":"Coller votre fichier ici...", "ppGrace": "authentifications restantes, changez votre mot de passe !", "proxyError": "Mauvaise passerelle : impossible de joindre le serveur amont", "pwd":"Mot de passe", @@ -268,6 +269,7 @@ "resetPwd":"Réinitialiser mon mot de passe", "rest2f":"Code de vérification", "rightsReloadNeedsLogout": "Le rechargement des droits nécessite une déconnexion", +"rules":"REGLES", "scope": "Informations", "search":"Chercher", "searchingAttributes":"Attributs de recherche", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/it.json b/lemonldap-ng-portal/site/htdocs/static/languages/it.json index c9f7e9aaf..4b917e589 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/it.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/it.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"autenticazioni restanti, modifica la tua password!", "proxyError":"Gateway errata: impossibile associarsi a un server remoto", "pwd":"Password", @@ -268,6 +269,7 @@ "resetPwd":"Reimpostare la password", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Le ricariche dei diritti necessitano di disconnettersi e di riconnettersi", +"rules":"RULES", "scope":"Ambito", "search":"Ricerca", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/nl.json b/lemonldap-ng-portal/site/htdocs/static/languages/nl.json index 55990c699..5edb57381 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/nl.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/nl.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"authentications remaining, change your password!", "proxyError":"Bad gateway: unable to join remote server", "pwd":"Password", @@ -268,6 +269,7 @@ "resetPwd":"Reset my password", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again", +"rules":"RULES", "scope":"Scope", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/pl.json b/lemonldap-ng-portal/site/htdocs/static/languages/pl.json index a99a8f1fe..ff12e25a3 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/pl.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/pl.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimalna liczba znaków specjalnych:", "passwordPolicyNone":"Możesz sam wybrać hasło!", "passwordPolicySpecialChar":"Dozwolone znaki specjalne:", +"pasteHere":"Paste your file here...", "ppGrace":"pozostałe uwierzytelnienia, zmień hasło!", "proxyError":"Zła brama: nie można dołączyć się do zdalnego serwera", "pwd":"Hasło", @@ -268,6 +269,7 @@ "resetPwd":"Zresetuj moje hasło", "rest2f":"Kod weryfikacyjny", "rightsReloadNeedsLogout":"Przeładowania uprawnień wymaga wylogowania i ponownego zalogowania", +"rules":"RULES", "scope":"Zakres", "search":"Szukaj", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/pt.json b/lemonldap-ng-portal/site/htdocs/static/languages/pt.json index ea29877c5..450185f53 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/pt.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/pt.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"authentications remaining, change your password!", "proxyError":"Bad gateway: unable to join remote server", "pwd":"Password", @@ -268,6 +269,7 @@ "resetPwd":"Reset my password", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again", +"rules":"RULES", "scope":"Scope", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/ro.json b/lemonldap-ng-portal/site/htdocs/static/languages/ro.json index b6f5c936e..14d2bf78c 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/ro.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/ro.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"authentications remaining, change your password!", "proxyError":"Bad gateway: unable to join remote server", "pwd":"Password", @@ -268,6 +269,7 @@ "resetPwd":"Reset my password", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again", +"rules":"RULES", "scope":"Scope", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/tr.json b/lemonldap-ng-portal/site/htdocs/static/languages/tr.json index fcbf342fd..414a4f24f 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/tr.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/tr.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimum özel karakter sayısı:", "passwordPolicyNone":"Parolanızı seçmekte özgürsünüz!", "passwordPolicySpecialChar":"İzin verilen özel karakter sayısı:", +"pasteHere":"Paste your file here...", "ppGrace":"kimlik doğrulaması kaldı, parolanızı değiştirin!", "proxyError":"Kötü ağ geçidi: uzak sunucuya katılamıyor", "pwd":"Parola", @@ -268,6 +269,7 @@ "resetPwd":"Parolamı sıfırla", "rest2f":"Doğrulama kodu", "rightsReloadNeedsLogout":"Yetkiler yeniden yüklendiğinde çıkış yapıp tekrar giriş yapmanız gerekir", +"rules":"RULES", "scope":"Kapsam", "search":"Ara", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/vi.json b/lemonldap-ng-portal/site/htdocs/static/languages/vi.json index 64b55d009..605e1e99e 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/vi.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/vi.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"chứng thực vẫn còn, thay đổi mật khẩu của bạn!", "proxyError":"Gateway không chính xác: không thể kết nối máy chủ từ xa", "pwd":"Mật khẩu", @@ -268,6 +269,7 @@ "resetPwd":"Đặt lại mật khẩu của tôi", "rest2f":"Verification code", "rightsReloadNeedsLogout":"Tải lại quyền cần đăng xuất và đăng nhập lại", +"rules":"RULES", "scope":"Phạm vi", "search":"Search", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/zh.json b/lemonldap-ng-portal/site/htdocs/static/languages/zh.json index 23de1b66a..0664e9ce9 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/zh.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/zh.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyNone":"You are free to choose your password!", "passwordPolicySpecialChar":"Allowed special characters:", +"pasteHere":"Paste your file here...", "ppGrace":"authentications remaining, change your password!", "proxyError":"错误的网关:无法连接远程服务器", "pwd":"密码", @@ -268,6 +269,7 @@ "resetPwd":"重置我的密码", "rest2f":"Verification code", "rightsReloadNeedsLogout":"重新加载权限需要登出并且再次登录", +"rules":"RULES", "scope":"Scope", "search":"搜索", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/zh_TW.json b/lemonldap-ng-portal/site/htdocs/static/languages/zh_TW.json index 356c0be0a..9426039cf 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/zh_TW.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/zh_TW.json @@ -241,6 +241,7 @@ "passwordPolicyMinSpeChar":"最少特殊字元:", "passwordPolicyNone":"您可以自由選擇密碼!", "passwordPolicySpecialChar":"已允許的特殊字元:", +"pasteHere":"Paste your file here...", "ppGrace":"剩餘認證,請變更您的密碼!", "proxyError":"Bad gateway:無法加入遠端伺服器", "pwd":"密碼", @@ -268,6 +269,7 @@ "resetPwd":"重設我的密碼", "rest2f":"驗證代碼", "rightsReloadNeedsLogout":"重新載入權限需要登出然後再次登入", +"rules":"RULES", "scope":"範圍", "search":"搜尋", "searchingAttributes":"Searching attributes", diff --git a/lemonldap-ng-portal/site/templates/bootstrap/checkdevops.tpl b/lemonldap-ng-portal/site/templates/bootstrap/checkdevops.tpl index b25229cb6..7c60226df 100644 --- a/lemonldap-ng-portal/site/templates/bootstrap/checkdevops.tpl +++ b/lemonldap-ng-portal/site/templates/bootstrap/checkdevops.tpl @@ -6,6 +6,7 @@
HEADERS
+
:
@@ -14,8 +15,21 @@
+ +
+
+
RULES
+
+
+ + : ">
+
+
+
+
+
-
+
" />