+62
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>CAS Resource List Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div th:fragment="cas-resource-list" id="cas-resource-list" class="card d-sm-none d-md-block">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title" th:text="#{cas.login.resources.header}">Links to CAS Resources</h3>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item">
|
||||
<a th:href="@{/status/dashboard}" th:inline="text">
|
||||
<i class="fa fa-cogs"></i>[[#{cas.login.resources.dashboard}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item" th:if="${attributeConsentEnabled}">
|
||||
<a th:href="@{/consentReview}" th:inline="text">
|
||||
<i class="fa fa-cogs"></i>[[#{screen.consent.title}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<a href="http://apereo.github.io/cas" th:inline="text">
|
||||
<i class="fa fa-file"></i>[[#{cas.login.resources.wiki}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<a href="https://github.com/apereo/cas/pulls" th:inline="text">
|
||||
<i class="fa fa-bug"></i>[[#{cas.login.resources.pulls}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<a href="https://apereo.github.io/cas/developer/Contributor-Guidelines.html" th:inline="text">
|
||||
<i class="fa fa-bug"></i>[[#{cas.login.resources.contribguide}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<a href="https://apereo.github.io/cas/Mailing-Lists.html" th:inline="text">
|
||||
<i class="fa fa-envelope"></i>[[#{cas.login.resources.mailinglist}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<a href="https://gitter.im/apereo/cas" th:inline="text">
|
||||
<i class="far fa-comment-alt"></i>[[#{cas.login.resources.chat}]]
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<a href="https://apereo.github.io/" th:inline="text">
|
||||
<i class="fa fa-rss"></i> [[#{cas.login.resources.blog}]]
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Cookies Notice Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div th:fragment="cookiesDisabled" id="cookiesDisabled" class="card" style="display: none;">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" th:utext="#{screen.cookies.disabled.title}">screen.cookies.disabled.title</h5>
|
||||
<p class="card-text" th:utext="#{screen.cookies.disabled.message}">screen.cookies.disabled.message</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>staticAuthentication Fragment</title>
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div th:fragment="staticAuthentication" id="staticAuthentication" class="card" th:if="${staticAuthentication}">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" th:utext="#{screen.defaultauthn.title}">screen.defaultauthn.title text</h5>
|
||||
<p class="card-text" th:utext="#{screen.defaultauthn.heading}">screen.defaultauthn.heading text</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Footer Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<footer th:fragment="footer" class="footer" role="contentinfo">
|
||||
<div class="container">
|
||||
<span id="copyright" th:utext="#{copyright}"></span>
|
||||
<span>Powered by <a href="http://www.apereo.org/cas">
|
||||
Apereo Central Authentication Service
|
||||
<span th:text="${T(org.apereo.cas.util.CasVersion).getVersion()}"></span>
|
||||
<span th:text="${T(org.apereo.cas.util.CasVersion).getDateTime()}"></span> </a>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Header Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<header th:fragment="header" role="banner">
|
||||
<nav class="navbar navbar-expand-md fixed-top">
|
||||
<a class="navbar-brand" href="#"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 336.82 167.83" class="logo"><defs><style>.cls-1{fill:#024d71;}.cls-2{fill:#74c163;}</style></defs><title>cas_logo</title><g id="Layer_2" data-name="Layer 2"><path class="cls-1" d="M217.72,469.85c-17.68,1.31-38.31,1-54.18-7.87-12.59-7-23.71-18.52-28.72-32.14a82,82,0,0,1-4.49-27.49c0-36.26,16.11-64.23,40.29-80.34,16.59-11.38,36-16.83,58.54-16.83,17.3,0,30.34,4,35.08,6.64l-9.48,27.73c-4.5-2.38-15.17-5.22-28.92-5.22s-26.78,4.27-36.5,12.33c-13.27,11.13-22,29.39-22,51.66,0,25.6,14.46,42.67,42.43,42.67a161.48,161.48,0,0,0,22.38-1.19Z" transform="translate(-130.33 -305.18)"/><path class="cls-1" d="M322.77,398.75l-2.72-30.4c-.71-8.76-1.42-21.56-2.14-31.28h-.71c-4,9.72-8.53,22-12.8,31.28l-13.69,30.08-13.53,33.43-17.33,38.41h-36.5l78-159.75h43.85l18.49,159.75H327.87l-3.05-38.12Z" transform="translate(-130.33 -305.18)"/><path class="cls-1" d="M364.31,438.85c12.27,3.81,21.29,5.19,36.22,5.19,13,0,20.87-6.71,20.87-19,0-9.24-6.87-14.93-21.57-22.75-16.82-9-32.94-21.8-32.94-42.42,0-32.24,28-51.91,62.81-51.91,19.19,0,30.57,4.27,37.44,7.82l-10.66,28.44a62.94,62.94,0,0,0-29.63-6.87c-15.88,0-24.17,7.82-24.17,16.59,0,9.48,9.72,15.17,23.23,22.75,19.43,10.19,31.52,23.23,31.52,42.43,0,35.55-29.44,55.72-64.71,53.8a231.52,231.52,0,0,1-24.78-2.61Z" transform="translate(-130.33 -305.18)"/></g><g id="swoosh"><path class="cls-2" d="M257.45,432.24a41.64,41.64,0,0,1,13.11-.32,39.17,39.17,0,0,1,16.89,6.2l0,0c10.55-15,29.11-25,50.24-25,19.75,0,37.34,8.85,48.16,22.28l1-.77c-12.85-17.31-37.44-29-65.67-29-26.92,0-50.54,10.65-63.81,26.65Z" transform="translate(-130.33 -305.18)"/></g></svg></a>
|
||||
</nav>
|
||||
</header>
|
||||
</body>
|
||||
</html>
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>insecure notice Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div th:fragment="insecure" id="insecureNotice" class="card" th:if="${not #httpServletRequest.secure}">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" th:utext="#{screen.nonsecure.title}">screen.nonsecure.title text</h5>
|
||||
<p class="card-text" th:utext="#{screen.nonsecure.message}">screen.nonsecure.message text</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>loginProviders Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
|
||||
<div th:fragment="loginProviders" th:remove="tag">
|
||||
<div th:if="${pac4jUrls}" id="list-providers" class="card d-sm-none d-md-block bg-light">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title" th:utext="#{screen.welcome.label.loginwith}">Or login with:</h3>
|
||||
|
||||
<div class="card-text">
|
||||
<ul>
|
||||
<li th:each="entry: ${pac4jUrls}" th:switch="${entry.type}">
|
||||
<a class="btn btn-block btn-social"
|
||||
th:classappend="'btn-' + ${entry.type}"
|
||||
th:href="@{${entry.redirectUrl}}"
|
||||
th:attr="autoredirect=${entry.autoRedirect}"
|
||||
th:inline="text"
|
||||
th:title="${entry.name}">
|
||||
|
||||
<span th:case="twitter" class="fab fa-twitter-square"></span>
|
||||
<span th:case="foursquare" class="fab fa-foursquare"></span>
|
||||
<span th:case="windowslive" class="fab fa-windows"></span>
|
||||
<span th:case="yahoo" class="fab fa-yahoo"></span>
|
||||
<span th:case="bitbucket" class="fab fa-bitbucket"></span>
|
||||
<span th:case="wordpress" class="fab fa-wordpress"></span>
|
||||
<span th:case="google2" class="fab fa-google-plus"></span>
|
||||
<span th:case="github" class="fab fa-github-alt"></span>
|
||||
<span th:case="dropbox" class="fab fa-dropbox"></span>
|
||||
<span th:case="linkedin" class="fab fa-linkedin"></span>
|
||||
<span th:case="facebook" class="fab fa-facebook-square"></span>
|
||||
<span th:case="oidc" class="fab fa-openid"></span>
|
||||
<span th:case="saml2" th:class="${entry.cssClass}"></span>
|
||||
<span th:case="*" class="fa fa-sign-in-alt"></span>
|
||||
|
||||
[[${entry.name}]]
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:if="${wsfedUrls}" id="list-providers" class="card d-sm-none d-md-block bg-light">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title" th:utext="#{screen.welcome.label.loginwith}"/>
|
||||
<div class="card-text">
|
||||
<ul>
|
||||
<li th:each="entry: ${wsfedUrls}">
|
||||
<a class="btn btn-block btn-social"
|
||||
th:classappend="btn-sm"
|
||||
th:href="@{${entry.redirectUrl}}"
|
||||
th:inline="text"
|
||||
onload=""
|
||||
th:attr="autoredirect=${entry.autoRedirect}"
|
||||
th:title="${entry.name}">
|
||||
|
||||
<span class="fab fa-windows"></span>
|
||||
|
||||
[[${entry.name}]]
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var redirectTo = $( "a[autoRedirect=true]" ).attr("href");
|
||||
if (redirectTo != null && redirectTo != undefined) {
|
||||
window.location.href = redirectTo;
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+160
@@ -0,0 +1,160 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Login Form Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
<!-- Login form template begins here -->
|
||||
<div th:fragment="loginform" class="card">
|
||||
<div class="card-header text-center">
|
||||
<h2 th:text="#{cas.login.pagetitle}">Login</h2>
|
||||
<span class="fa-stack fa-2x hidden-xs">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-lock fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="post" id="fm1" th:object="${credential}" action="login">
|
||||
<div class="alert alert-danger" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">Example error</span>
|
||||
</div>
|
||||
|
||||
<h3 th:utext="#{screen.welcome.instructions}">Enter your Username and Password</h3>
|
||||
|
||||
<section class="form-group">
|
||||
<label for="username" th:utext="#{screen.welcome.label.netid}">Username</label>
|
||||
|
||||
<div th:if="${openIdLocalId}">
|
||||
<strong>
|
||||
<span th:utext="${openIdLocalId}"/>
|
||||
</strong>
|
||||
<input type="hidden"
|
||||
id="username"
|
||||
name="username"
|
||||
th:value="${openIdLocalId}"/>
|
||||
</div>
|
||||
<div th:unless="${openIdLocalId}">
|
||||
<input class="form-control required"
|
||||
id="username"
|
||||
size="25"
|
||||
tabindex="1"
|
||||
type="text"
|
||||
th:disabled="${guaEnabled}"
|
||||
th:field="*{username}"
|
||||
th:accesskey="#{screen.welcome.label.netid.accesskey}"
|
||||
autocomplete="off"/>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="form-group">
|
||||
<label for="password" th:utext="#{screen.welcome.label.password}">Password</label>
|
||||
|
||||
<div>
|
||||
<input class="form-control required"
|
||||
type="password"
|
||||
id="password"
|
||||
size="25"
|
||||
tabindex="2"
|
||||
th:accesskey="#{screen.welcome.label.password.accesskey}"
|
||||
th:field="*{password}"
|
||||
autocomplete="off"/>
|
||||
<span id="capslock-on" style="display:none;">
|
||||
<p>
|
||||
<i class="fa fa-exclamation-circle"></i>
|
||||
<span th:utext="#{screen.capslock.on}"/>
|
||||
</p>
|
||||
</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="form-check" th:if="${passwordManagementEnabled && param.doChangePassword != null}">
|
||||
<p>
|
||||
<input type="checkbox" name="doChangePassword" id="doChangePassword"
|
||||
value="true" th:checked="${param.doChangePassword != null}" tabindex="4"/>
|
||||
<label for="doChangePassword" th:text="#{screen.button.changePassword}">Change Password</label>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="form-check" th:if="${rememberMeAuthenticationEnabled}">
|
||||
<p>
|
||||
<input type="checkbox" name="rememberMe" id="rememberMe" value="true" tabindex="5"/>
|
||||
<label for="rememberMe" th:text="#{screen.rememberme.checkbox.title}">Remember Me</label>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="row" th:if="${recaptchaSiteKey != null AND recaptchaInvisible != null AND recaptchaSiteKey != null AND !recaptchaInvisible}">
|
||||
<div class="g-recaptcha" th:attr="data-sitekey=${recaptchaSiteKey}"/>
|
||||
</section>
|
||||
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
<p th:if="${#request.getMethod().equalsIgnoreCase('POST')}">
|
||||
<span th:each="entry : ${httpRequestInitialPostParameters}" th:remove="tag">
|
||||
<span th:each="entryValue : ${entry.value}" th:remove="tag">
|
||||
<input type="hidden" th:name="${entry.key}" th:value="${entryValue}" />
|
||||
</span>
|
||||
</span>
|
||||
</p>
|
||||
<input class="btn btn-block btn-submit"
|
||||
th:unless="${recaptchaSiteKey != null AND recaptchaInvisible != null AND recaptchaSiteKey != null AND recaptchaInvisible}"
|
||||
name="submit"
|
||||
accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}"
|
||||
tabindex="6"
|
||||
type="submit"
|
||||
value="Login3"
|
||||
/>
|
||||
<button class="btn btn-block btn-submit g-recaptcha"
|
||||
th:if="${recaptchaSiteKey != null AND recaptchaInvisible != null AND recaptchaSiteKey != null AND recaptchaInvisible}"
|
||||
th:attr="data-sitekey=${recaptchaSiteKey}, data-badge=${recaptchaPosition}"
|
||||
data-callback="onSubmit"
|
||||
name="submitBtn"
|
||||
accesskey="l"
|
||||
th:text="#{screen.welcome.button.login}"
|
||||
tabindex="6"
|
||||
/>
|
||||
</form>
|
||||
|
||||
<form th:if="${passwordManagementEnabled}" method="post" id="passwordManagementForm">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="resetPassword"/>
|
||||
<span class="fa fa-unlock"></span>
|
||||
<a th:utext="#{screen.pm.button.resetPassword}" href="javascript:void(0)" onclick="$('#passwordManagementForm').submit();"/>
|
||||
<p/>
|
||||
</form>
|
||||
|
||||
<div th:unless="${passwordManagementEnabled}">
|
||||
<span class="fa fa-question-circle"></span>
|
||||
<span th:utext="#{screen.pm.button.forgotpwd}">Forgot your password?</span>
|
||||
<p/>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
var i = [[#{screen.welcome.button.loginwip}]]
|
||||
$( document ).ready(function() {
|
||||
$("#fm1").submit(function () {
|
||||
$(":submit").attr("disabled", true);
|
||||
$(":submit").attr("value", i);
|
||||
console.log(i);
|
||||
return true;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div th:replace="fragments/loginsidebar :: loginsidebar" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Login Sidebar Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div th:fragment="loginsidebar" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
<p th:utext="#{screen.welcome.security}">For security reasons, please <a href="logout">log out</a> and exit
|
||||
your web browser when you are done accessing \
|
||||
services that require authentication!</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Password Update Form</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var policyPattern = /*[[${policyPattern}]]*/;
|
||||
var passwordStrengthI18n = {
|
||||
0: /*[[#{screen.pm.password.strength.0}]]*/,
|
||||
1: /*[[#{screen.pm.password.strength.1}]]*/,
|
||||
2: /*[[#{screen.pm.password.strength.2}]]*/,
|
||||
3: /*[[#{screen.pm.password.strength.3}]]*/,
|
||||
4: /*[[#{screen.pm.password.strength.4}]]*/
|
||||
};
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div class="alert alert-info">
|
||||
<h3 th:utext="${expiredPass} ? #{screen.expiredpass.heading} : #{screen.mustchangepass.heading}">Change Password
|
||||
Heading</h3>
|
||||
<form id="passwordManagementForm" th:if="${passwordManagementEnabled}" method="post" th:object="${password}">
|
||||
<div class="alert alert-danger" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">Error text</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="password" th:utext="#{screen.pm.enterpsw}">Enter Password:</label>
|
||||
<input class="form-control" type="password" id="password" th:field="*{password}" required/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="confirmedPassword" th:utext="#{screen.pm.confirmpsw}">Confirm Password:</label>
|
||||
<input class="form-control" type="password" id="confirmedPassword" th:field="*{confirmedPassword}"
|
||||
required/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<span th:text="#{screen.pm.password.strength}">Strength:</span>
|
||||
<span id="password-strength-icon" class="fas" aria-hidden="true"></span>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div id="strengthProgressBar" class="progress-bar"></div>
|
||||
</div>
|
||||
<div>
|
||||
<span id="password-strength-warning"></span> <span id="password-strength-suggestions"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="password-strength-notes">
|
||||
<div id="password-policy-violation-msg" class="alert alert-danger" role="alert" style="display: none;">
|
||||
<span class="fas fa-exclamation-circle" aria-hidden="true"></span>
|
||||
<strong th:text="#{screen.pm.password.policyViolation}">Password does not match the password policy requirement.</strong>
|
||||
</div>
|
||||
<div id="password-confirm-mismatch-msg" class="alert alert-danger" role="alert" style="display: none;">
|
||||
<span class="fas fa-exclamation-circle" aria-hidden="true"></span>
|
||||
<strong th:text="#{screen.pm.password.confirmMismatch}">Passwords do not match.</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group text-center">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input class="btn btn-submit"
|
||||
name="submit"
|
||||
accesskey="s"
|
||||
th:value="#{screen.pm.button.submit}"
|
||||
value="SUBMIT"
|
||||
id="submit"
|
||||
type="submit"
|
||||
disabled="true"/>
|
||||
|
||||
<a class="btn btn-danger" th:href="@{/login}" th:text="#{screen.pm.button.cancel}">CANCEL</a>
|
||||
</div>
|
||||
</form>
|
||||
<p th:unless="${passwordManagementEnabled}"
|
||||
th:utext="${expiredPass} ? #{screen.expiredpass.message} : #{screen.mustchangepass.message}">Expired/Must
|
||||
Change Password text</p>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
<script type="text/javascript" th:src="@{#{webjars.zxcvbn.js}}"></script>
|
||||
<script type="text/javascript" th:src="@{#{webjars.jqueryui.js}}"></script>
|
||||
<script type="text/javascript" th:src="@{#{webjars.jquerycookie.js}}"></script>
|
||||
<script src="//www.google.com/recaptcha/api.js" async defer th:if="${recaptchaSiteKey}"></script>
|
||||
<script th:src="@{#{webjars.bootstrapmin.js}}"></script>
|
||||
|
||||
<script th:src="@{#{webjars.headmin.js}}"></script>
|
||||
<script th:src="@{#{webjars.storemin.js}}"></script>
|
||||
<script type="text/javascript" th:src="@{${#themes.code('cas.javascript.file')}}"></script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
head.ready(document, function () {
|
||||
if (!window.jQuery) {
|
||||
var jqueryUrl = /*[[@{#{webjars.jquerymin.js}}]]*/;
|
||||
head.load(jqueryUrl, loadjQueryUI);
|
||||
} else {
|
||||
notifyResourcesAreLoaded(resourceLoadedSuccessfully);
|
||||
}
|
||||
});
|
||||
|
||||
function loadjQueryUI() {
|
||||
var jqueryUrl = /*[[@{#{webjars.jqueryui.js}}]]*/;
|
||||
head.load(jqueryUrl, loadjQueryCookies);
|
||||
}
|
||||
|
||||
function loadjQueryCookies() {
|
||||
var jqueryUrl = /*[[@{#{webjars.jquerycookie.js}}]]*/;
|
||||
head.load(jqueryUrl, notifyResourcesAreLoaded(resourceLoadedSuccessfully));
|
||||
}
|
||||
|
||||
function notifyResourcesAreLoaded(callback) {
|
||||
if (typeof callback === "function") {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var trackGeoLocation = /*[[${trackGeoLocation}]]*/ === "true";
|
||||
|
||||
var googleAnalyticsTrackingId = /*[[${googleAnalyticsTrackingId}]]*/;
|
||||
|
||||
if (googleAnalyticsTrackingId != null && googleAnalyticsTrackingId != '') {
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', googleAnalyticsTrackingId, 'auto');
|
||||
ga('send', 'pageview');
|
||||
}
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" th:if="${recaptchaSiteKey != null AND recaptchaInvisible != null AND recaptchaSiteKey != null AND recaptchaInvisible}" th:inline="javascript">
|
||||
function onSubmit(token) {
|
||||
$('#fm1').submit();
|
||||
}
|
||||
</script>
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Service UI Fragment</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div th:fragment="serviceUI" th:if="${registeredService}" id="serviceui" class="alert alert-info">
|
||||
<div th:if="${serviceUIMetadata}">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<img th:if="${serviceUIMetadata.logoUrl}"
|
||||
th:title="${serviceUIMetadata.displayName}"
|
||||
th:alt="${serviceUIMetadata.displayName}"
|
||||
th:src="${serviceUIMetadata.logoUrl}"
|
||||
th:width="${serviceUIMetadata.logoWidth}"
|
||||
th:height="${serviceUIMetadata.logoHeight}"/>
|
||||
|
||||
<img th:unless="${serviceUIMetadata.logoUrl}"
|
||||
th:title="${serviceUIMetadata.displayName}"
|
||||
th:alt="${serviceUIMetadata.displayName}"
|
||||
th:src="@{images/webapp.png}"
|
||||
th:width="${serviceUIMetadata.logoWidth}"
|
||||
th:height="${serviceUIMetadata.logoHeight}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="servicedesc">
|
||||
<h2 th:text="${serviceUIMetadata.displayName}">serviceUIMetadata.displayName</h2>
|
||||
<p th:text="${serviceUIMetadata.description}">serviceUIMetadata.description</p>
|
||||
|
||||
<p th:if="${serviceUIMetadata.informationURL}" th:utext="#{screen.mdui.infolink.text(${serviceUIMetadata.informationURL})}">screen.mdui.infolink.text</p>
|
||||
<p th:if="${serviceUIMetadata.privacyStatementURL}" th:utext="#{screen.mdui.privacylink.text(${serviceUIMetadata.privacyStatementURL})}">serviceUIMetadata.privacyStatementURL</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div th:unless="${serviceUIMetadata}">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<img th:src="${registeredService.logo}" th:if="${registeredService.logo}"/>
|
||||
<img th:src="@{images/webapp.png}" th:unless="${registeredService.logo}"/>
|
||||
</td>
|
||||
<td id="servicedesc">
|
||||
<h2 th:text="${registeredService.name}">Registered Service Name</h2>
|
||||
<p th:text="${registeredService.description}">Registered Service Description</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user