Display rules (#2458)

This commit is contained in:
Christophe Maudoux 2021-02-12 22:27:02 +01:00
parent 60cbb6d5f2
commit 110974cce4
17 changed files with 87 additions and 14 deletions

View File

@ -2,7 +2,7 @@ package Lemonldap::NG::Portal::Plugins::CheckDevOps;
use strict; use strict;
use Mouse; use Mouse;
use JSON qw(from_json to_json); use JSON qw(from_json);
use Lemonldap::NG::Portal::Main::Constants qw( use Lemonldap::NG::Portal::Main::Constants qw(
PE_OK PE_OK
PE_ERROR PE_ERROR
@ -66,9 +66,9 @@ sub display {
} }
sub run { sub run {
my ( $self, $req ) = @_; my ( $self, $req ) = @_;
my ( $msg, $alert ); my ( $headers, $rules ) = ( [], [] );
my $headers = []; my ( $msg, $alert );
# Check token # Check token
if ( $self->ottRule->( $req, {} ) ) { if ( $self->ottRule->( $req, {} ) ) {
@ -88,6 +88,7 @@ sub run {
$token = $self->ott->createToken(); $token = $self->ott->createToken();
} }
# Prepare form
my $params = { my $params = {
PORTAL => $self->conf->{portal}, PORTAL => $self->conf->{portal},
MAIN_LOGO => $self->conf->{portalMainLogo}, MAIN_LOGO => $self->conf->{portalMainLogo},
@ -108,29 +109,56 @@ sub run {
my $json = eval { from_json( $req->param('checkDevOpsFile') ) }; my $json = eval { from_json( $req->param('checkDevOpsFile') ) };
if ($@) { if ($@) {
# Prepare form params
$msg = 'PE' . PE_BAD_DEVOPS_FILE; $msg = 'PE' . PE_BAD_DEVOPS_FILE;
$alert = 'alert-danger'; $alert = 'alert-danger';
$json = ''; $json = '';
$self->userLogger->error("CheckDevOps: bad 'rules.json' file ($@)"); $self->userLogger->error("CheckDevOps: bad 'rules.json' file ($@)");
} }
else { else {
my $vhost = $self->p->HANDLER->resolveAlias($req);
my $handler = $self->p->HANDLER; my $handler = $self->p->HANDLER;
my $vhost = $handler->resolveAlias($req);
# Compile headers & rules # Removed forbidden session attributes
$handler->headersInit( undef, { $vhost => $json->{headers} } ); foreach my $v ( split /\s+/, $self->conf->{hiddenAttributes} ) {
$handler->locationRulesInit( undef, { $vhost => $json->{rules} } ); 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 ); $headers = $handler->checkHeaders( $req, $req->userData );
my $list = join ', ', map { "$_->{key}:$_->{value}" } @$headers; my $headers_list = join ', ', map { "$_->{key}:$_->{value}" } @$headers;
$self->logger->debug("CheckDevOps compiled headers: $list"); $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'; $msg = 'checkDevOps';
$alert = 'alert-info'; $alert = 'alert-info';
$json = $req->param('checkDevOpsFile'); $json = JSON->new->ascii->pretty->encode($json); # Pretty print
$self->logger->debug("CheckDevOps provided file: $json");
} }
# Prepare form
my $params = { my $params = {
PORTAL => $self->conf->{portal}, PORTAL => $self->conf->{portal},
MAIN_LOGO => $self->conf->{portalMainLogo}, MAIN_LOGO => $self->conf->{portalMainLogo},
@ -140,6 +168,7 @@ sub run {
ALERTE => $alert, ALERTE => $alert,
FILE => $json, FILE => $json,
HEADERS => $headers, HEADERS => $headers,
RULES => $rules,
TOKEN => ( TOKEN => (
$self->ottRule->( $req, {} ) $self->ottRule->( $req, {} )
? $self->ott->createToken() ? $self->ott->createToken()

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"المصادقات المتبقية، غير كلمة المرور الخاصة بك!", "ppGrace":"المصادقات المتبقية، غير كلمة المرور الخاصة بك!",
"proxyError":"بوابة سيئة: غير قادر على الانضمام لالخادم البعيد", "proxyError":"بوابة سيئة: غير قادر على الانضمام لالخادم البعيد",
"pwd":"كلمة المرور", "pwd":"كلمة المرور",
@ -268,6 +269,7 @@
"resetPwd":"إعادة تعيين كلمة المرور الخاصة بي", "resetPwd":"إعادة تعيين كلمة المرور الخاصة بي",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":" إعادة تحميل الحقوق تحتاج إلى تسجيل الخروج وتسجيل الدخول مرة أخرى", "rightsReloadNeedsLogout":" إعادة تحميل الحقوق تحتاج إلى تسجيل الخروج وتسجيل الدخول مرة أخرى",
"rules":"RULES",
"scope":"نطاق", "scope":"نطاق",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"verbleibende Authentifizierungen, bitte Passwort ändern !", "ppGrace":"verbleibende Authentifizierungen, bitte Passwort ändern !",
"proxyError":"Bad gateway: Der Remote-Server kann nicht verbunden werden", "proxyError":"Bad gateway: Der Remote-Server kann nicht verbunden werden",
"pwd":"Passwort", "pwd":"Passwort",
@ -268,6 +269,7 @@
"resetPwd":"Mein Passwort zurücksetzen", "resetPwd":"Mein Passwort zurücksetzen",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Zum Neuladen der Rechte musst du dich ab- und wieder anmelden", "rightsReloadNeedsLogout":"Zum Neuladen der Rechte musst du dich ab- und wieder anmelden",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"authentications remaining, change your password!", "ppGrace":"authentications remaining, change your password!",
"proxyError":"Bad gateway: unable to join remote server", "proxyError":"Bad gateway: unable to join remote server",
"pwd":"Password", "pwd":"Password",
@ -268,6 +269,7 @@
"resetPwd":"Reset my password", "resetPwd":"Reset my password",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Rights reloads need to logout and login again", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"autenticaciones restantes, ¡cambie su contraseña!.", "ppGrace":"autenticaciones restantes, ¡cambie su contraseña!.",
"proxyError":"Puerta de enlace no válida: servidor remoto inalcanzable", "proxyError":"Puerta de enlace no válida: servidor remoto inalcanzable",
"pwd":"Contraseña", "pwd":"Contraseña",
@ -268,6 +269,7 @@
"resetPwd":"Reiniciar mi contraseña", "resetPwd":"Reiniciar mi contraseña",
"rest2f":"Código de verificación", "rest2f":"Código de verificación",
"rightsReloadNeedsLogout":"La recarga de derechos necesita desconectarse y conectarse de nuevo", "rightsReloadNeedsLogout":"La recarga de derechos necesita desconectarse y conectarse de nuevo",
"rules":"RULES",
"scope":"Alcance", "scope":"Alcance",
"search":"Buscar", "search":"Buscar",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"authentications remaining, change your password!", "ppGrace":"authentications remaining, change your password!",
"proxyError":"Bad gateway: unable to join remote server", "proxyError":"Bad gateway: unable to join remote server",
"pwd":"Salasana", "pwd":"Salasana",
@ -268,6 +269,7 @@
"resetPwd":"Palauta salasanani?", "resetPwd":"Palauta salasanani?",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Rights reloads need to logout and login again", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimum de caractères spéciaux :", "passwordPolicyMinSpeChar":"Minimum de caractères spéciaux :",
"passwordPolicyNone":"Vous êtes libre de choisir votre mot de passe !", "passwordPolicyNone":"Vous êtes libre de choisir votre mot de passe !",
"passwordPolicySpecialChar":"Caractères spéciaux autorisés :", "passwordPolicySpecialChar":"Caractères spéciaux autorisés :",
"pasteHere":"Coller votre fichier ici...",
"ppGrace": "authentifications restantes, changez votre mot de passe !", "ppGrace": "authentifications restantes, changez votre mot de passe !",
"proxyError": "Mauvaise passerelle : impossible de joindre le serveur amont", "proxyError": "Mauvaise passerelle : impossible de joindre le serveur amont",
"pwd":"Mot de passe", "pwd":"Mot de passe",
@ -268,6 +269,7 @@
"resetPwd":"Réinitialiser mon mot de passe", "resetPwd":"Réinitialiser mon mot de passe",
"rest2f":"Code de vérification", "rest2f":"Code de vérification",
"rightsReloadNeedsLogout": "Le rechargement des droits nécessite une déconnexion", "rightsReloadNeedsLogout": "Le rechargement des droits nécessite une déconnexion",
"rules":"REGLES",
"scope": "Informations", "scope": "Informations",
"search":"Chercher", "search":"Chercher",
"searchingAttributes":"Attributs de recherche", "searchingAttributes":"Attributs de recherche",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"autenticazioni restanti, modifica la tua password!", "ppGrace":"autenticazioni restanti, modifica la tua password!",
"proxyError":"Gateway errata: impossibile associarsi a un server remoto", "proxyError":"Gateway errata: impossibile associarsi a un server remoto",
"pwd":"Password", "pwd":"Password",
@ -268,6 +269,7 @@
"resetPwd":"Reimpostare la password", "resetPwd":"Reimpostare la password",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Le ricariche dei diritti necessitano di disconnettersi e di riconnettersi", "rightsReloadNeedsLogout":"Le ricariche dei diritti necessitano di disconnettersi e di riconnettersi",
"rules":"RULES",
"scope":"Ambito", "scope":"Ambito",
"search":"Ricerca", "search":"Ricerca",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"authentications remaining, change your password!", "ppGrace":"authentications remaining, change your password!",
"proxyError":"Bad gateway: unable to join remote server", "proxyError":"Bad gateway: unable to join remote server",
"pwd":"Password", "pwd":"Password",
@ -268,6 +269,7 @@
"resetPwd":"Reset my password", "resetPwd":"Reset my password",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Rights reloads need to logout and login again", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimalna liczba znaków specjalnych:", "passwordPolicyMinSpeChar":"Minimalna liczba znaków specjalnych:",
"passwordPolicyNone":"Możesz sam wybrać hasło!", "passwordPolicyNone":"Możesz sam wybrać hasło!",
"passwordPolicySpecialChar":"Dozwolone znaki specjalne:", "passwordPolicySpecialChar":"Dozwolone znaki specjalne:",
"pasteHere":"Paste your file here...",
"ppGrace":"pozostałe uwierzytelnienia, zmień hasło!", "ppGrace":"pozostałe uwierzytelnienia, zmień hasło!",
"proxyError":"Zła brama: nie można dołączyć się do zdalnego serwera", "proxyError":"Zła brama: nie można dołączyć się do zdalnego serwera",
"pwd":"Hasło", "pwd":"Hasło",
@ -268,6 +269,7 @@
"resetPwd":"Zresetuj moje hasło", "resetPwd":"Zresetuj moje hasło",
"rest2f":"Kod weryfikacyjny", "rest2f":"Kod weryfikacyjny",
"rightsReloadNeedsLogout":"Przeładowania uprawnień wymaga wylogowania i ponownego zalogowania", "rightsReloadNeedsLogout":"Przeładowania uprawnień wymaga wylogowania i ponownego zalogowania",
"rules":"RULES",
"scope":"Zakres", "scope":"Zakres",
"search":"Szukaj", "search":"Szukaj",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"authentications remaining, change your password!", "ppGrace":"authentications remaining, change your password!",
"proxyError":"Bad gateway: unable to join remote server", "proxyError":"Bad gateway: unable to join remote server",
"pwd":"Password", "pwd":"Password",
@ -268,6 +269,7 @@
"resetPwd":"Reset my password", "resetPwd":"Reset my password",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Rights reloads need to logout and login again", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"authentications remaining, change your password!", "ppGrace":"authentications remaining, change your password!",
"proxyError":"Bad gateway: unable to join remote server", "proxyError":"Bad gateway: unable to join remote server",
"pwd":"Password", "pwd":"Password",
@ -268,6 +269,7 @@
"resetPwd":"Reset my password", "resetPwd":"Reset my password",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Rights reloads need to logout and login again", "rightsReloadNeedsLogout":"Rights reloads need to logout and login again",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimum özel karakter sayısı:", "passwordPolicyMinSpeChar":"Minimum özel karakter sayısı:",
"passwordPolicyNone":"Parolanızı seçmekte özgürsünüz!", "passwordPolicyNone":"Parolanızı seçmekte özgürsünüz!",
"passwordPolicySpecialChar":"İzin verilen özel karakter sayısı:", "passwordPolicySpecialChar":"İzin verilen özel karakter sayısı:",
"pasteHere":"Paste your file here...",
"ppGrace":"kimlik doğrulaması kaldı, parolanızı değiştirin!", "ppGrace":"kimlik doğrulaması kaldı, parolanızı değiştirin!",
"proxyError":"Kötü ağ geçidi: uzak sunucuya katılamıyor", "proxyError":"Kötü ağ geçidi: uzak sunucuya katılamıyor",
"pwd":"Parola", "pwd":"Parola",
@ -268,6 +269,7 @@
"resetPwd":"Parolamı sıfırla", "resetPwd":"Parolamı sıfırla",
"rest2f":"Doğrulama kodu", "rest2f":"Doğrulama kodu",
"rightsReloadNeedsLogout":"Yetkiler yeniden yüklendiğinde çıkış yapıp tekrar giriş yapmanız gerekir", "rightsReloadNeedsLogout":"Yetkiler yeniden yüklendiğinde çıkış yapıp tekrar giriş yapmanız gerekir",
"rules":"RULES",
"scope":"Kapsam", "scope":"Kapsam",
"search":"Ara", "search":"Ara",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "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!", "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", "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", "pwd":"Mật khẩu",
@ -268,6 +269,7 @@
"resetPwd":"Đặt lại mật khẩu của tôi", "resetPwd":"Đặt lại mật khẩu của tôi",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"Tải lại quyền cần đăng xuất và đăng nhập lại", "rightsReloadNeedsLogout":"Tải lại quyền cần đăng xuất và đăng nhập lại",
"rules":"RULES",
"scope":"Phạm vi", "scope":"Phạm vi",
"search":"Search", "search":"Search",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"Minimal special characters:", "passwordPolicyMinSpeChar":"Minimal special characters:",
"passwordPolicyNone":"You are free to choose your password!", "passwordPolicyNone":"You are free to choose your password!",
"passwordPolicySpecialChar":"Allowed special characters:", "passwordPolicySpecialChar":"Allowed special characters:",
"pasteHere":"Paste your file here...",
"ppGrace":"authentications remaining, change your password!", "ppGrace":"authentications remaining, change your password!",
"proxyError":"错误的网关:无法连接远程服务器", "proxyError":"错误的网关:无法连接远程服务器",
"pwd":"密码", "pwd":"密码",
@ -268,6 +269,7 @@
"resetPwd":"重置我的密码", "resetPwd":"重置我的密码",
"rest2f":"Verification code", "rest2f":"Verification code",
"rightsReloadNeedsLogout":"重新加载权限需要登出并且再次登录", "rightsReloadNeedsLogout":"重新加载权限需要登出并且再次登录",
"rules":"RULES",
"scope":"Scope", "scope":"Scope",
"search":"搜索", "search":"搜索",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -241,6 +241,7 @@
"passwordPolicyMinSpeChar":"最少特殊字元:", "passwordPolicyMinSpeChar":"最少特殊字元:",
"passwordPolicyNone":"您可以自由選擇密碼!", "passwordPolicyNone":"您可以自由選擇密碼!",
"passwordPolicySpecialChar":"已允許的特殊字元:", "passwordPolicySpecialChar":"已允許的特殊字元:",
"pasteHere":"Paste your file here...",
"ppGrace":"剩餘認證,請變更您的密碼!", "ppGrace":"剩餘認證,請變更您的密碼!",
"proxyError":"Bad gateway無法加入遠端伺服器", "proxyError":"Bad gateway無法加入遠端伺服器",
"pwd":"密碼", "pwd":"密碼",
@ -268,6 +269,7 @@
"resetPwd":"重設我的密碼", "resetPwd":"重設我的密碼",
"rest2f":"驗證代碼", "rest2f":"驗證代碼",
"rightsReloadNeedsLogout":"重新載入權限需要登出然後再次登入", "rightsReloadNeedsLogout":"重新載入權限需要登出然後再次登入",
"rules":"RULES",
"scope":"範圍", "scope":"範圍",
"search":"搜尋", "search":"搜尋",
"searchingAttributes":"Searching attributes", "searchingAttributes":"Searching attributes",

View File

@ -6,6 +6,7 @@
<div class="row"> <div class="row">
<div class="card col border-secondary"> <div class="card col border-secondary">
<div class="text-center bg-light text-dark"><b><span trspan="headers">HEADERS</span></b></div> <div class="text-center bg-light text-dark"><b><span trspan="headers">HEADERS</span></b></div>
<br>
<div class="font-weight-bold"> <div class="font-weight-bold">
<TMPL_LOOP NAME="HEADERS"> <TMPL_LOOP NAME="HEADERS">
<TMPL_VAR NAME="key">: <TMPL_VAR NAME="value"><br/> <TMPL_VAR NAME="key">: <TMPL_VAR NAME="value"><br/>
@ -14,8 +15,21 @@
</div> </div>
</div> </div>
</TMPL_IF> </TMPL_IF>
<TMPL_IF NAME="RULES">
<div class="row">
<div class="card col border-secondary">
<div class="text-center bg-light text-dark"><b><span trspan="rules">RULES</span></b></div>
<br>
<div class="font-weight-bold">
<TMPL_LOOP NAME="RULES">
<TMPL_VAR NAME="uri">: <span trspan="<TMPL_VAR NAME="access">"><TMPL_VAR NAME="access"></span><br/>
</TMPL_LOOP>
</div>
</div>
</div>
</TMPL_IF>
<form id="checkDevOps" action="/checkdevops" method="post" class="password" role="form"> <form id="checkDevOps" action="/checkdevops" method="post" class="password" role="form">
<pre><textarea id="checkDevOpsFile" name="checkDevOpsFile" class="form-control rounded-1" rows="6" trplaceholder="Paste your file here..." required><TMPL_VAR NAME="FILE"></textarea></pre> <pre><textarea id="checkDevOpsFile" name="checkDevOpsFile" class="form-control rounded-1" rows="6" trplaceholder="pasteHere" required><TMPL_VAR NAME="FILE"></textarea></pre>
<TMPL_IF NAME="TOKEN"> <TMPL_IF NAME="TOKEN">
<input type="hidden" name="token" value="<TMPL_VAR NAME="TOKEN">" /> <input type="hidden" name="token" value="<TMPL_VAR NAME="TOKEN">" />
</TMPL_IF> </TMPL_IF>