+53
@@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.acceptableusagepolicyview.pagetitle}"></title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login" class="card">
|
||||
<form method="post" id="fm1">
|
||||
<div class="card-header text-center">
|
||||
<h3 th:text="#{screen.aup.heading}">Acceptable Usage Policy</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div>
|
||||
The purpose of this policy is to establish acceptable and unacceptable use of electronic devices and
|
||||
network resources in conjunction with the established culture of ethical and lawful behavior,
|
||||
openness, trust, and
|
||||
integrity.
|
||||
<div>
|
||||
<p/>
|
||||
<p>By using these resources, you agree to abide by the Acceptable Usage Policy.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input class="btn btn-success"
|
||||
name="submit"
|
||||
accesskey="s"
|
||||
th:value="#{screen.aup.button.accept}"
|
||||
value="ACCEPT"
|
||||
type="submit"/>
|
||||
<span style="width: 3px"></span>
|
||||
<input
|
||||
class="btn btn-warning"
|
||||
name="cancel"
|
||||
accesskey="c"
|
||||
th:value="#{screen.aup.button.cancel}"
|
||||
value="CANCEL"
|
||||
type="button"
|
||||
onclick="location.href = location.href;"/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.accountdisabled.heading}">CAS Account Disabled View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.accountdisabled.heading}">This account has been disabled.</h2>
|
||||
<p th:utext="#{screen.accountdisabled.message}">Please contact the system administrator to regain
|
||||
access.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.accountlocked.heading}">Account Locked View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.accountlocked.heading}">This account has been locked.</h2>
|
||||
<p th:utext="#{screen.accountlocked.message}">Please contact the system administrator to regain access.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.authnblocked.heading}">Authentication Blocked View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.authnblocked.heading}">Authentication attempt is blocked.</h2>
|
||||
<p th:utext="#{screen.authnblocked.message}">Your authentication attempt is untrusted and unauthorized from
|
||||
your current workstation.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.authy.pagetitle}">Authy Login View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="box fl-panel" id="login">
|
||||
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:object="${credential}" th:action="@{/login}">
|
||||
|
||||
<div id="msg" class="alert alert-danger" role="alert" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">this error block and text is only shown if there are errors</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="token" th:utext="#{screen.welcome.label.password}"><span
|
||||
class="accesskey">P</span>assword:</label>
|
||||
|
||||
<input type="password" class="form-control required" id="token" size="25" tabindex="1"
|
||||
th:field="*{token}"
|
||||
th:accesskey="#{screen.welcome.label.password.accesskey}" autocomplete="off"/>
|
||||
</div>
|
||||
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="LOGIN"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.azure.pagetitle}">Microsoft Authenticator View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
<style>
|
||||
textarea {
|
||||
border: 2pt;
|
||||
font-family: "Courier New";
|
||||
font-weight: bold;
|
||||
font-size: 45px;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login" class="box">
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:object="${credential}" th:action="@{/login}">
|
||||
<div id="msg" class="alert alert-danger" role="alert" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">this error block and text is only shown if there are errors</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="token">Press 'LOGIN' below and provide the displayed code via your mobile device.</label>
|
||||
|
||||
<textarea readonly class="form-control" id="token" size="25" rows="1" cols="8"
|
||||
th:field="*{token}"></textarea>
|
||||
</div>
|
||||
|
||||
<input class="btn btn-submit"
|
||||
name="_eventId_submit"
|
||||
accesskey="l"
|
||||
tabindex="1"
|
||||
th:value="#{screen.welcome.button.login}"
|
||||
id="submitBtn"
|
||||
type="submit"
|
||||
value="LOGIN"/>
|
||||
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.badhours.heading}">Bad Hours View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.badhours.heading}">Your account is forbidden to login at this time.</h2>
|
||||
<p th:utext="#{screen.badhours.message}">Please try again later.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.badworkstation.heading}">Bad Workstation View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.badworkstation.heading}">You cannot login from this workstation.</h2>
|
||||
<p th:utext="#{screen.badworkstation.message}">Please contact the system administrator to regain access.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.logout.confirm.header}">Confirm Logout View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-info">
|
||||
<h2 th:utext="#{screen.logout.confirm.header}">Do you want to log out completely?</h2>
|
||||
<p th:utext="#{screen.logout.confirm.text}">An application may have redirected you to the Central
|
||||
Authentication Service \
|
||||
to completely log you out and destroy your single sign-on session. If you choose to log out, you will be
|
||||
asked again \
|
||||
to provide your credentials and re-autheticate once you attempt to access an application.
|
||||
<p>
|
||||
<p><br>Do you want to proceed?</p>
|
||||
|
||||
<div align="center">
|
||||
<form method="post" id="fm1">
|
||||
<input type="hidden" name="LogoutRequestConfirmed" value="true"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="success"/>
|
||||
<input class="btn btn-primary"
|
||||
name="success"
|
||||
accesskey="l"
|
||||
th:value="#{screen.welcome.button.logout}"
|
||||
value="Logout"
|
||||
type="submit"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.confirmation.message}">Confirm View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" class="confirmView">
|
||||
<div class="alert alert-info">
|
||||
<h4 th:text="#{screen.confirmation.message}">You asked to be warned before logging into applications. Please
|
||||
proceed.</h4>
|
||||
|
||||
<form method="post" id="form" class="fm-v clearfix">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input id="ignorewarn"
|
||||
class="form-check-input"
|
||||
name="ignorewarn"
|
||||
value="true"
|
||||
tabindex="1"
|
||||
type="checkbox"/>
|
||||
<label for="ignorewarn" class="form-check-label" th:utext="#{screen.welcome.label.warnremove}">Do
|
||||
not warn me again</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input class="btn btn-submit" name="_eventId_success" accesskey="l"
|
||||
th:value="#{screen.button.continue}" tabindex="4" type="submit" value="Continue"/>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.logout.header}">Consent Logout View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:utext="#{screen.logout.header}">Logout successful</h2>
|
||||
<p th:utext="#{screen.consent.review.logout.success}">You have successfully logged out of the Consent Review
|
||||
page. You may completely <a href="../logout">log out</a> of the Central Authentication Service and end
|
||||
your single sign-on session.</p>
|
||||
<p th:utext="#{screen.logout.security}">For security reasons, exit your web browser.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.consent.review.header}">Consent Review View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
|
||||
<script th:src="@{#{webjars.datatables.jquery.datatablesmin.js}}"></script>
|
||||
<script th:src="@{#{webjars.datatables.datatables.bootstrapmin.js}}"></script>
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
var urls = {
|
||||
delete: /*[[@{/consentReview/deleteConsentDecision}]]*/,
|
||||
getConsentDecisions: /*[[@{/consentReview/getConsentDecisions}]]*/
|
||||
};
|
||||
var strings = {
|
||||
error: /*[[#{screen.consent.review.error}]]*/,
|
||||
success: /*[[#{screen.consent.review.success}]]*/,
|
||||
confirm: /*[[#{screen.consent.review.confirm}]]*/,
|
||||
yes: /*[[#{screen.consent.review.yes}]]*/,
|
||||
no: /*[[#{screen.consent.review.no}]]*/,
|
||||
data: {
|
||||
search: /*[[#{screen.consent.review.data.search}]]*/,
|
||||
zeroRecords: /*[[#{screen.consent.review.data.zerorecords}]]*/,
|
||||
info: /*[[#{screen.consent.review.data.info}]]*/,
|
||||
infoFiltered: /*[[#{screen.consent.review.data.infofiltered}]]*/,
|
||||
infoEmpty: /*[[#{screen.consent.review.data.infoempty}]]*/
|
||||
}
|
||||
};
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/consentReview.js}]]*/
|
||||
);
|
||||
};
|
||||
</script>
|
||||
<link rel="stylesheet" th:href="@{/css/consentReview.css}"/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div id="content">
|
||||
<div class="card consentOverview">
|
||||
<div class="card-header">
|
||||
<h3 th:utext="#{screen.consent.review.header}">Review Attribute Consent</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="loadingMessage">
|
||||
<h4 th:text="#{screen.consent.review.loading}">Loading consent decisions...</h4>
|
||||
</div>
|
||||
|
||||
<div id="no-consent-decisions">
|
||||
<p th:text="#{screen.consent.review.noconsentdecisions}">There are no consent decisions
|
||||
registered for you.</p>
|
||||
</div>
|
||||
|
||||
<div id="consent-decisons">
|
||||
<div id="alertWrapper"></div>
|
||||
<table id="consentDecisions" class="table table-striped table-hover">
|
||||
<thead>
|
||||
<th th:text="#{screen.consent.review.date}">Date</th>
|
||||
<th th:texT="#{screen.consent.review.service}">Service</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="info hidden">
|
||||
<td class="info" colspan="3">
|
||||
<div>
|
||||
<table class="table table-bordered row-detail">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="field-label active consent-created-date-label col-3"
|
||||
th:utext="#{screen.consent.review.createddate}">Created Date:
|
||||
</td>
|
||||
<td class="created-date"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="field-label active consent-reminder-label col-3"
|
||||
th:utext="#{screen.consent.review.reminder}">Reminder:
|
||||
</td>
|
||||
<td class="consent-reminder">
|
||||
<span class="seconds"
|
||||
th:utext="#{screen.consent.options.timeunit.seconds}">Seconds</span>
|
||||
<span class="minutes"
|
||||
th:utext="#{screen.consent.options.timeunit.minutes}">Minutes</span>
|
||||
<span class="hours"
|
||||
th:utext="#{screen.consent.options.timeunit.hours}">Hours
|
||||
<span class="days"
|
||||
th:utext="#{screen.consent.options.timeunit.days}">Days</span>
|
||||
<span class="weeks"
|
||||
th:utext="#{screen.consent.options.timeunit.weeks}">Weeks</span>
|
||||
<span class="months"
|
||||
th:utext="#{screen.consent.options.timeunit.months}">Months</span>
|
||||
<span class="years"
|
||||
th:utext="#{screen.consent.options.timeunit.years}">Years</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="field-label active consent-option-label col-3"
|
||||
th:utext="#{screen.consent.review.option}">Option:
|
||||
</td>
|
||||
<td class="consent-options">
|
||||
<span class="attribute-name label label-default"
|
||||
th:utext="#{screen.consent.options.attributename}"
|
||||
th:title="#{screen.consent.review.options.desc.attributename}"
|
||||
data-toggle="tooltip"
|
||||
data-placement="bottom">Attribute Name</span>
|
||||
<span class="attribute-value label label-default"
|
||||
th:utext="#{screen.consent.options.attributevalue}"
|
||||
th:title="#{screen.consent.review.options.desc.attributevalue}"
|
||||
data-toggle="tooltip"
|
||||
data-placement="bottom">Attribute Value</span>
|
||||
<span class="always label label-default"
|
||||
th:utext="#{screen.consent.options.always}"
|
||||
th:title="#{screen.consent.review.options.desc.always}"
|
||||
data-toggle="tooltip" data-placement="bottom">Show the consent screen every time I attempt to log in.</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="field-label active consent-attributes-label col-3"
|
||||
th:utext="#{screen.consent.review.attributes}">Attributes:
|
||||
</td>
|
||||
<td>
|
||||
<table class="table table-striped table-bordered consent-attributes">
|
||||
<thead>
|
||||
<tr>
|
||||
<th th:text="#{screen.consent.attributes.attribute}">
|
||||
Attribute
|
||||
</th>
|
||||
<th th:text="#{screen.consent.attributes.values}">Value(s)
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<button type="button" class="btn btn-danger"
|
||||
th:utext="#{screen.consent.review.delete}">DELETE
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" name="logout" id="logout" class="btn btn-primary"
|
||||
th:utext="#{screen.welcome.button.logout}">Logout
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+198
@@ -0,0 +1,198 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.consent.title}">Consent View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
|
||||
<link rel="stylesheet" th:href="@{#{webjars.bootstrap-selectmin.css}}">
|
||||
<script th:src="@{#{webjars.bootstrap-selectmin.js}}"></script>
|
||||
<script th:src="@{#{webjars.bootstrapmin.js}}"></script>
|
||||
|
||||
<link rel="stylesheet" th:href="@{#{webjars.datatables.bootstrapmin.css}}"/>
|
||||
<script th:src="@{#{webjars.datatables.jquery.datatablesmin.js}}"></script>
|
||||
<script th:src="@{#{webjars.datatables.datatables.bootstrapmin.js}}"></script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
var data = {
|
||||
attributes: /*[[${attributes}]]*/
|
||||
};
|
||||
var strings = {
|
||||
info: /*[[#{screen.consent.attributes.data.info}]]*/
|
||||
};
|
||||
/*]]>*/
|
||||
</script>
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/consent.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
|
||||
<form method="post" id="fm1">
|
||||
<div class="alert alert-info">
|
||||
<h2 th:text="#{screen.consent.title}">Attribute Consent</h2>
|
||||
|
||||
<ul class="nav nav-tabs" id="consentTabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="attributes-tab" data-toggle="tab" href="#attributesPanel"
|
||||
role="tab" aria-controls="attributes" aria-selected="true"
|
||||
th:text="#{screen.consent.attributes}">Attributes</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="options-tab" data-toggle="tab" href="#optionsPanel" role="tab"
|
||||
aria-controls="options" aria-selected="false" th:text="#{screen.consent.options}">Options</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="mb-4 tab-content" id="consentTabsContent">
|
||||
<div class="tab-pane fade show active bg-white p-4" id="attributesPanel" role="tabpanel"
|
||||
aria-labelledby="attributes-tab">
|
||||
<p th:utext="#{screen.consent.attributes.header(${service.id})}">The following attributes will
|
||||
be released to</p>
|
||||
<table id="attributesTable" class="display table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th th:text="#{screen.consent.attributes.attribute}">Attribute</th>
|
||||
<th th:text="#{screen.consent.attributes.values}">Value(s)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade bg-white p-4" id="optionsPanel" role="tabpanel"
|
||||
aria-labelledby="options-tab">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header bg-info text-white" th:text="#{screen.consent.options.header}">How
|
||||
should I be prompted
|
||||
for consent again?
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="option" id="optionAlways"
|
||||
value="0"
|
||||
th:checked="${option == 0}"
|
||||
onclick="optionSelected()"/>
|
||||
<label class="form-check-label" for="optionAlways"
|
||||
th:utext="#{screen.consent.options.always}">Always</label>
|
||||
<span class="help-block"
|
||||
th:text="#{screen.consent.options.desc.always(${service.id})}">help block</span>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="option" id="optionAttributeName"
|
||||
value="1"
|
||||
th:checked="${option == 1}"
|
||||
onclick="optionSelected()"/>
|
||||
<label class="form-check-label" for="optionAttributeName"
|
||||
th:utext="#{screen.consent.options.attributename}">Attribute Name</label>
|
||||
<span class="help-block"
|
||||
th:text="#{screen.consent.options.desc.attributename(${service.id})}">help block</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="option" value="2"
|
||||
th:checked="${option == 2}"
|
||||
onclick="optionSelected()" />
|
||||
<label class="form-check-label" th:utext="#{screen.consent.options.attributevalue}">Attribute
|
||||
Value</label>
|
||||
<span class="help-block" th:utext="#{screen.consent.options.desc.attributevalue.intro} +
|
||||
'<ul><li>' +
|
||||
#{screen.consent.options.desc.attributevalue.first(${service.id})} +
|
||||
'</li><li>' +
|
||||
#{screen.consent.options.desc.attributevalue.second(${service.id})} +
|
||||
'</li><li>' +
|
||||
#{screen.consent.options.desc.attributevalue.third(${service.id})} +
|
||||
'</li><ul>'"/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="reminderPanel" class="card">
|
||||
<div class="card-header bg-info text-white"
|
||||
th:text="#{screen.consent.options.reminder.header}">How often should I be reminded to
|
||||
consent again?
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p th:text="#{screen.consent.options.reminder.expl(${service.id})}">Show the consent
|
||||
screen, as a
|
||||
reminder, in the event that there is no change to the collection of attributes
|
||||
released to
|
||||
{0}.</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input name="reminder" id="reminder" class="form-control" type="number"
|
||||
th:value="${reminder}">
|
||||
</td>
|
||||
<td>
|
||||
<select name="reminderTimeUnit" id="reminderTimeUnit" class="form-control">
|
||||
<option value="seconds"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'seconds'}"
|
||||
th:text="#{screen.consent.options.timeunit.seconds}">Seconds
|
||||
</option>
|
||||
<option value="minutes"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'minutes'}"
|
||||
th:text="#{screen.consent.options.timeunit.minutes}">Minutes
|
||||
</option>
|
||||
<option value="hours"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'hours'}"
|
||||
th:text="#{screen.consent.options.timeunit.hours}">Hours
|
||||
</option>
|
||||
<option value="days"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'days'}"
|
||||
th:text="#{screen.consent.options.timeunit.days}">Days
|
||||
</option>
|
||||
<option value="weeks"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'weeks'}"
|
||||
th:text="#{screen.consent.options.timeunit.weeks}">Weeks
|
||||
</option>
|
||||
<option value="months"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'months'}"
|
||||
th:text="#{screen.consent.options.timeunit.months}">Months
|
||||
</option>
|
||||
<option value="years"
|
||||
th:selected="${#strings.toLowerCase(reminderTimeUnit) == 'years'}"
|
||||
th:text="#{screen.consent.options.timeunit.years}">Years
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end Options Panel -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="confirm"/>
|
||||
<input class="btn btn-submit"
|
||||
name="confirm"
|
||||
accesskey="l"
|
||||
th:value="#{screen.consent.confirm}"
|
||||
value="Confirm"
|
||||
type="submit"/>
|
||||
<a class="btn btn-default" id="cancel" name="cancel"
|
||||
th:href="@{/login}" th:text="#{screen.consent.cancel}">Cancel</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
<title th:text="#{cas.mfa.duologin.pagetitle}">Duo Login View</title>
|
||||
<script th:src="@{/js/duo/Duo-Web-v2.min.js}"></script>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<form method="post" id="duo_form" class="fm-v clearfix" th:object="${credential}" th:action="@{/login}">
|
||||
<div id="msg" class="alert alert-danger" role="alert" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">this error block and text is only shown if there are errors</span>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
|
||||
<div id="login">
|
||||
<iframe id="duo_iframe"
|
||||
frameborder="0"
|
||||
th:attr="data-host=${apiHost},data-sig-request=${sigRequest}"
|
||||
data-post-argument="signedDuoResponse">
|
||||
</iframe>
|
||||
<style>
|
||||
#duo_iframe {
|
||||
width: 100%;
|
||||
min-width: 304px;
|
||||
max-width: 620px;
|
||||
height: 330px;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.expiredpass.heading}">CAS Expired Password View</title>
|
||||
<script type="text/javascript" th:src="@{/js/passwordMeter.js}"></script>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div th:replace="fragments/pwdupdateform(expiredPass='true')">
|
||||
<a href="fragments/pwdupdateform.html">pwdupdateform</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.success.header}">Generic Success View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" class="row">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:utext="#{screen.success.header}">Log In Successful</h2>
|
||||
<p th:utext="#{screen.success.success(${principal.id})}">You, <strong>username</strong>, have successfully
|
||||
logged into the Central Authentication Service. However, you are seeing this page because CAS does not
|
||||
know about your target destination and how to get you there. Examine the authentication request again
|
||||
and make sure a target service/application that is authorized and registered with CAS is specified.</p>
|
||||
|
||||
<p th:unless="${#maps.isEmpty(principal.attributes)}"><a data-toggle="collapse" href="#divAttributes" aria-expanded="false" aria-controls="divAttributes">Click here</a>
|
||||
to view attributes resolved and retrieved for <strong><span th:utext="${principal.id}"/></strong>.</p>
|
||||
|
||||
<p th:utext="#{screen.success.security}">When you are finished, for security reasons, please <a
|
||||
href="logout">log out</a> and exit your web browser.</p>
|
||||
|
||||
<div class="collapse" id="divAttributes">
|
||||
<table id="attributesTable" class="table table-striped table-bordered mt-3">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Attribute</th>
|
||||
<th>Value(s)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="attribute : ${principal.attributes}">
|
||||
<td><kbd><span th:utext="${attribute.key}"/></kbd></td>
|
||||
<td><code><span th:utext="${attribute.value}"/></code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="notices" class="col-md mt-3 mt-md-0">
|
||||
<div th:replace="fragments/cas-resources-list :: cas-resource-list">
|
||||
<a href="fragments/cas-resources-list.html">cas-resource</a> list fragment
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.googleauth.pagetitle}">Google Authentication View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:object="${credential}" th:action="@{/login}">
|
||||
<div id="msg" class="errors" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="token" class="fl-label" th:utext="#{cas.mfa.googleauth.label.token}">Token:</label>
|
||||
<input type="password" class="form-control required" id="token" size="25" tabindex="1"
|
||||
th:field="*{token}"
|
||||
th:accesskey="#{screen.welcome.label.password.accesskey}" autocomplete="off"/>
|
||||
<div>
|
||||
<p/>
|
||||
</div>
|
||||
</div>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="Login"/>
|
||||
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.googleauth.pagetitle}">Google Authentication Registration Review View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<h3 th:text="#{screen.authentication.gauth.register}">Your account is not registered. Use the below settings to
|
||||
register your device with CAS.</h3>
|
||||
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:action="@{/login}">
|
||||
<div class="form-group">
|
||||
<img th:src="@{'data:image/jpeg;base64,' + ${QRcode}}"/>
|
||||
<br/>
|
||||
<div>
|
||||
<p th:utext="#{screen.authentication.gauth.key(${key.getSecretKey()})}">Secret key to register is
|
||||
...</p>
|
||||
</div>
|
||||
|
||||
<p>Scratch Codes:</p>
|
||||
<ul>
|
||||
<li th:each="code : ${key.getScratchCodes()}" th:text="${code}">code</li>
|
||||
</ul>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input class="btn btn-submit" name="submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.register}" tabindex="4" type="submit" value="Register"/>
|
||||
<input class="btn btn-info" name="print" accesskey="p"
|
||||
th:value="#{screen.welcome.button.print}"
|
||||
tabindex="5" type="button"
|
||||
value="Print"
|
||||
onclick="window.print();"/>
|
||||
</div>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.login.pagetitle}">Gua Display User Graphics View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<h4 th:text="${guaUsername}">guaUsername</h4>
|
||||
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
|
||||
<strong th:utext="#{screen.gua.confirm.message}">If you do not recognize this image as yours, do NOT
|
||||
continue.</strong>
|
||||
</div>
|
||||
|
||||
<div align="middle">
|
||||
<img style="width:130px;height:130px;border-radius:20%;
|
||||
box-shadow: 0 0 2px 1px rgba(0, 140, 186, 0.5);
|
||||
border: 1px solid #ddd;border-radius: 4px;"
|
||||
th:src="@{'data:image/jpeg;base64,' + ${guaUserImage}}"/>
|
||||
|
||||
<div>
|
||||
<p/>
|
||||
</div>
|
||||
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:action="@{/login}">
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.button.continue}" tabindex="4" type="submit" value="Continue"/>
|
||||
<div class="row btn-row">
|
||||
<input type="hidden" name="username" th:value="${guaUsername}"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.login.pagetitle}">Gua Get User Id View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:action="@{/login}">
|
||||
<div class="form-group">
|
||||
<label for="username" th:utext="#{screen.welcome.label.netid}"><span class="accesskey">U</span>sername:</label>
|
||||
<input class="form-control"
|
||||
type="password"
|
||||
id="username"
|
||||
name="username"
|
||||
size="25"
|
||||
tabindex="2"
|
||||
th:accesskey="#{screen.welcome.label.netid.accesskey}"
|
||||
autocomplete="off"
|
||||
required/>
|
||||
<div>
|
||||
<p/>
|
||||
</div>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="LOGIN"/>
|
||||
</div>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.login.pagetitle}">CAS Interrupt View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
|
||||
<script th:inline="javascript" th:if="${interrupt.autoRedirect}">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var autoRedirect = /*[[${interrupt.autoRedirect}]]*/;
|
||||
var emptyLinks = /*[[${#maps.isEmpty(interrupt.links)}]]*/;
|
||||
|
||||
if (autoRedirect && !emptyLinks) {
|
||||
|
||||
var link = /*[[${interrupt.links.values().iterator().next()}]]*/;
|
||||
var redirectTimeout = /*[[${interrupt.autoRedirectAfterSeconds}]]*/;
|
||||
|
||||
setTimeout(function () {
|
||||
window.location = link;
|
||||
}, redirectTimeout <= 0 ? 0 : redirectTimeout * 1000);
|
||||
|
||||
}
|
||||
/*]]>*/
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<h1 th:text="#{screen.interrupt.title}">Authentication Interrupt</h1>
|
||||
<p th:utext="#{screen.interrupt.message(${principal.id})}">The authentication flow has been interrupted. CAS has
|
||||
not yet established a single sign-on session for <strong>{0}</strong>.</p>
|
||||
|
||||
<div th:if="${interrupt.message}" class="alert alert-info">
|
||||
<p th:utext="${interrupt.message}">interrupt.message</p>
|
||||
<br/>
|
||||
|
||||
<div th:if="${interrupt.links}">
|
||||
<a class="btn btn-success"
|
||||
th:each="link : ${interrupt.links}"
|
||||
th:text="${link.key}"
|
||||
th:href="${link.value}">link.key</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<form method="post" id="fm1" th:if="${not interrupt.block}">
|
||||
<div class="form-group text-center">
|
||||
<div class="col-12">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="proceed"/>
|
||||
<input class="btn btn-primary"
|
||||
name="proceed"
|
||||
accesskey="l"
|
||||
th:value="#{screen.interrupt.btn.proceed}"
|
||||
value="Proceed"
|
||||
type="submit"/>
|
||||
<a class="btn btn-primary" id="login" name="login"
|
||||
th:href="${service?.id} ?: @{/login}" th:text="#{screen.error.page.loginagain}">Login Again</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div th:if="${interrupt.block}" class="text-center">
|
||||
<a class="btn btn-warning" id="cancel" name="cancel" th:href="@{/login}"
|
||||
th:text="#{screen.interrupt.btn.cancel}">Cancel</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.authentication.warning}">CAS Login Message View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" class="loginMessageView">
|
||||
<div class="alert alert-warning">
|
||||
<h2 th:text="#{screen.authentication.warning}">Authentication Succeeded with Warnings</h2>
|
||||
<div th:each="message : ${messages}">
|
||||
<p class="message" th:utext="${message.text}">Message Text</p>
|
||||
</div>
|
||||
<section class="row">
|
||||
<div class="col-sm-3">
|
||||
<form method="post" id="form" class="fm-v clearfix" th:action="@{/login}">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="proceed"/>
|
||||
<input class="btn btn-submit" name="continue" accesskey="l"
|
||||
th:value="#{screen.button.continue}" tabindex="4" type="submit" value="Continue"/>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-sm-3" th:if="${passwordManagementEnabled}">
|
||||
<form th:if="${passwordExpirationWarningFound}" method="post" id="changePasswordForm" class="fm-v clearfix" th:action="@{/login}">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="changePassword"/>
|
||||
<input class="btn btn-info" name="changePassword" accesskey="l"
|
||||
th:value="#{screen.button.changePassword}" tabindex="5" type="submit"
|
||||
value="Change Password"/>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.login.pagetitle}">CAS Acceptable Use Policy View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
|
||||
</head>
|
||||
|
||||
<body class="login">
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" class="row">
|
||||
<div class="col-md">
|
||||
<div th:replace="fragments/loginform :: loginform"><a href="fragments/loginform.html">Login Form goes
|
||||
here</a></div>
|
||||
</div>
|
||||
<div id="notices" class="col-md mt-3 mt-md-0">
|
||||
<div th:replace="fragments/insecure :: insecure"><a href="fragments/insecure.html">insecure alert goes
|
||||
here</a></div>
|
||||
<div th:replace="fragments/defaultauthn :: staticAuthentication">
|
||||
<a href="fragments/defaultauthn.html">defaultAuthn</a>
|
||||
fragment
|
||||
</div>
|
||||
<div th:replace="fragments/cookies :: cookiesDisabled"><a href="fragments/cookies.html">cookies</a> fragment
|
||||
</div>
|
||||
<div th:replace="fragments/serviceui :: serviceUI"><a href="fragments/serviceui.html">service ui</a> fragment</div>
|
||||
<div th:replace="fragments/loginProviders :: loginProviders"><a href="fragments/loginProviders.html">loginProviders</a>
|
||||
fragment
|
||||
</div>
|
||||
<div th:replace="fragments/cas-resources-list :: cas-resource-list">
|
||||
<a href="fragments/cas-resources-list.html">cas-resource</a> list fragment
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.logout.header}">CAS Logout</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:utext="#{screen.logout.header}">Logout successful</h2>
|
||||
<p th:utext="#{screen.logout.success}">You have successfully logged out of the Central Authentication
|
||||
Service. You may <a href="login">log in</a> again.</p>
|
||||
<p th:utext="#{screen.logout.security}">For security reasons, exit your web browser.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.registerdevice.pagetitle}">CAS MFA Register Device View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<h2 th:text="#{cas.mfa.registerdevice.label.title}">Register Device</h2>
|
||||
<div th:text="#{cas.mfa.registerdevice.label.intro}">Please name the current device.</div>
|
||||
|
||||
<form method="post" id="registerform" class="fm-v clearfix">
|
||||
<div class="form-group">
|
||||
<label for="deviceName" class="fl-label" th:utext="#{cas.mfa.registerdevice.label.name}">Name</label>
|
||||
|
||||
<input type="text" class="form-control" name="deviceName" id="deviceName" size="25"
|
||||
tabindex="1"
|
||||
autocomplete="off"
|
||||
required/>
|
||||
<div>
|
||||
<br/>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{cas.mfa.registerdevice.button.register}" tabindex="4" type="submit"
|
||||
value="Register"/>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.mustchangepass.heading}">You must change your password View</title>
|
||||
<script type="text/javascript" th:src="@{/js/passwordMeter.js}"></script>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div th:replace="fragments/pwdupdateform"><a href="fragments/pwdupdateform.html">pwdupdateform</a></div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.pac4j.unauthz.pagetitle}">Pac4j Stop Webflow View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.pac4j.unauthz.heading}">Unauthorized Access</h2>
|
||||
<p th:utext="#{screen.pac4j.unauthz.message}">Either the authentication request was rejected/cancelled, or
|
||||
the authentication provider denied access due to permissions, etc. Review logs to find the root cause of
|
||||
the issue.</p>
|
||||
|
||||
<div>
|
||||
<p/>
|
||||
<table th:if="${error != null or reason != null or code != null or description != null}"
|
||||
class="table table-bordered table-hover table-responsive">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Error</th>
|
||||
<th>Reason</th>
|
||||
<th>Code</th>
|
||||
<th>Description</th>
|
||||
<th>Provider</th>
|
||||
<th>Destination</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="active">
|
||||
<td th:text="${error}">Error</td>
|
||||
<td th:text="${reason}">reason</td>
|
||||
<td th:text="${code}">code</td>
|
||||
<td th:text="${description}">description</td>
|
||||
<td th:text="${client}">client</td>
|
||||
<td>
|
||||
<a th:href="${service}" th:text="#{screen.pac4j.unauthz.gotoapp}">Goto Application</a>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
<a class="btn btn-submit" th:href="@{/login}" th:text="#{screen.pac4j.unauthz.login}">Back to CAS</a>
|
||||
<a class="btn btn-submit" th:href="${service}" th:text="#{screen.pac4j.unauthz.gotoapp}">Goto
|
||||
Application</a>
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.success.header}">Password Update Success View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:utext="#{screen.pm.success.header}">Password Change Successful</h2>
|
||||
<p th:utext="#{screen.pm.success.message}">Your account password is successfully updated.</p>
|
||||
|
||||
<form method="post" id="form" class="fm-v clearfix" th:action="@{/login}">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="proceed"/>
|
||||
<input class="btn btn-submit" name="continue" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="Login"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.login.pagetitle}">Passwordless Display View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<div class="alert alert-info">
|
||||
<strong>Provide Token</strong><p>
|
||||
Please provide the security token sent to you via email, phone, etc. Note that the token is valid for only a brief window and
|
||||
upon submission, all other tokens will be invalidated and removed.</p>
|
||||
</div>
|
||||
<div class="alert alert-danger alert-dismissible" th:if="${error}">
|
||||
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
|
||||
<strong>Authentication Failure</strong><p>The provided token could not be verified. It may have been invalidated, removed or expired.</p>
|
||||
</div>
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:action="@{/login}">
|
||||
<div class="form-group">
|
||||
<label for="password">Token:</label>
|
||||
<input class="form-control"
|
||||
type="password"
|
||||
id="password"
|
||||
name="password"
|
||||
size="25"
|
||||
tabindex="2"
|
||||
autocomplete="off"
|
||||
required/>
|
||||
<div>
|
||||
<p/>
|
||||
</div>
|
||||
<input type="hidden" name="username" th:if="${passwordlessAccount}" th:value="${passwordlessAccount.username}"/>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="LOGIN"/>
|
||||
</div>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.login.pagetitle}">Passwordless Get User Id View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:action="@{/login}">
|
||||
<div class="form-group">
|
||||
<label for="username" th:utext="#{screen.welcome.label.netid}"><span class="accesskey">U</span>sername:</label>
|
||||
<input class="form-control"
|
||||
type="password"
|
||||
id="username"
|
||||
name="username"
|
||||
size="25"
|
||||
tabindex="2"
|
||||
th:accesskey="#{screen.welcome.label.netid.accesskey}"
|
||||
autocomplete="off"
|
||||
required/>
|
||||
<div>
|
||||
<p/>
|
||||
</div>
|
||||
|
||||
<input class="btn btn-submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="LOGIN"/>
|
||||
</div>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.logout.header}">Propagate Logout View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
<link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
|
||||
|
||||
<script th:src="@{#{webjars.poppermin.js}}"></script>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
</script>
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
function redirectToApp() {
|
||||
window.location = [[${logoutRedirectUrl}]];
|
||||
}
|
||||
|
||||
function handleCallback(index, status) {
|
||||
if (status == 200) {
|
||||
$('#service' + index).addClass('fa-check').removeClass('fa-question');
|
||||
$('#service' + index).prop('title', 'Logout request was successfully received.');
|
||||
} else {
|
||||
$('#service' + index).addClass('fa-warning').removeClass('fa-question');
|
||||
$('#service' + index).prop('title', 'Logout notification could not be sent.');
|
||||
}
|
||||
}
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:utext="#{screen.logout.header}">Logout successful</h2>
|
||||
<p th:utext="#{screen.logout.fc.success}">You have successfully logged out of the Central Authentication
|
||||
Service. Given single logout is enabled with CAS, \
|
||||
the following list of applications are <strong> only notified</strong> to log you out and destroy your
|
||||
user session. Remember that this \
|
||||
is just a notification, not a guarantee. It is up the application itself to honor these notifications
|
||||
and properly take action to log you \
|
||||
out.</p>
|
||||
<ol start="a">
|
||||
<li th:each="entry,iterStat : ${logoutUrls}">
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
$.ajax({
|
||||
url: [[${entry.key.logoutUrl.toExternalForm()}]],
|
||||
dataType: 'jsonp',
|
||||
async: true,
|
||||
contentType: [[${entry.value.contentType}]]
|
||||
, data: [[${entry.value.message}]]
|
||||
, success: function (data) {
|
||||
var index = [[${iterStat.index}]];
|
||||
handleCallback(index, 200);
|
||||
},
|
||||
error: function (err, textStatus, errorThrown) {
|
||||
var index = [[${iterStat.index}]];
|
||||
handleCallback(index, err.status);
|
||||
}
|
||||
});
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
<p>
|
||||
<i data-toggle="tooltip" data-placement="top" class="fa fa-question"
|
||||
th:id="${'service'+iterStat.index}" title="Logout request pending..."> </i>
|
||||
<kbd th:text="${entry.key.service.id}">entry.key.service.id</kbd>
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p th:utext="#{screen.logout.security}">For security reasons, exit your web browser.</p>
|
||||
|
||||
<input type="button" th:if="${logoutRedirectUrl}"
|
||||
class="btn btn-primary btn-success" onclick="redirectToApp();"
|
||||
th:value="${'Go to ' + logoutRedirectUrl}" value="Go to...">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.radius.pagetitle}">Radius Login View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:object="${credential}" th:action="@{/login}">
|
||||
<div class="alert alert-danger" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">error message</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="token" class="fl-label" th:utext="#{screen.welcome.label.password}"><span class="accesskey">P</span>assword:</label>
|
||||
|
||||
<input type="password" class="form-control required" id="token" size="25" tabindex="1"
|
||||
th:field="*{token}"
|
||||
th:accesskey="#{screen.welcome.label.password.accesskey}" autocomplete="off"/>
|
||||
</div>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="Login"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.pm.reset.title}">Password Reset Error View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.pm.reset.heading}">Password Reset Failed</h2>
|
||||
<p th:utext="#{screen.pm.reset.message}">We were unable to process your password reset request at this time.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.pm.reset.title}">Reset Password Send Instructions View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="reset">
|
||||
<h3 th:utext="#{screen.pm.reset.title}">Reset your password</h3>
|
||||
<span th:utext="#{screen.pm.reset.instructions}">Please provide your username. You will receive an email with follow-up instructions on how to reset your password.</span>
|
||||
<form method="post" id="fm1" class="fm-v clearfix">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="findAccount"/>
|
||||
<div class="form-group">
|
||||
<label for="username" class="fl-label" th:utext="#{screen.pm.reset.username}"/>
|
||||
<input type="text" class="form-control" id="username" name="username"
|
||||
size="45" tabindex="1" required/>
|
||||
</div>
|
||||
<input class="btn btn-submit" accesskey="s"
|
||||
th:value="#{screen.pm.button.submit}" tabindex="2" type="submit" value="SUBMIT"/>
|
||||
|
||||
<input class="btn btn-danger"
|
||||
name="cancel"
|
||||
accesskey="c"
|
||||
th:value="#{screen.pm.button.cancel}"
|
||||
type="button"
|
||||
onclick="location.href = location.href;" value="CANCEL"/>
|
||||
|
||||
</form>
|
||||
<p/>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
var i = [[#{screen.welcome.button.loginwip}]];
|
||||
$('#fm1').submit(function () {
|
||||
$(':submit').attr('disabled', true);
|
||||
$(':submit').attr('value', i);
|
||||
return true;
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.pm.reset.title}">Reset Password Sent Instructions View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:utext="#{screen.pm.reset.sent}">Password Reset Instructions Sent Successfully.</h2>
|
||||
<p th:utext="#{screen.pm.reset.sentInstructions}">You should shortly receive an email with
|
||||
follow-instructions to reset your password. Please do not take long as the password reset instructions
|
||||
may expire.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.pm.reset.title}">Reset Password Verify Questions View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<h2 th:utext="#{screen.pm.reset.qstitle}">Answer Security Questions</h2>
|
||||
<p th:utext="#{screen.pm.reset.qsmsg(${username})}">Welcome <strong>{0}</strong>. Before you can reset your
|
||||
password, you must answer the following security questions.</p>
|
||||
|
||||
<form method="post" id="fm1" class="fm-v clearfix">
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input type="hidden" name="username" th:value="${username}"/>
|
||||
<input type="hidden" name="token" th:value="${token}"/>
|
||||
|
||||
<div class="form-group">
|
||||
<table width="100%" th:if="${questionsEnabled}" class="table">
|
||||
<tr th:each="q : ${questions}">
|
||||
<td th:utext="${q}">Question text</td>
|
||||
<td>
|
||||
<input type="password" class="form-control required" required th:name="${'q' + qStat.index}"
|
||||
size="45"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<input class="btn btn-submit" accesskey="s"
|
||||
th:value="#{screen.pm.button.submit}" tabindex="2" type="submit" value="SUBMIT"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.risk.authnblocked.heading}">Risk Authentication Blocked View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.risk.authnblocked.heading}">Authentication attempt is blocked.</h2>
|
||||
<p th:utext="#{screen.risk.authnblocked.message}">Your authentication attempt is untrusted and unauthorized from your current workstation.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.service.error.header}">Service Error View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.service.error.header}">Application Not Authorized to Use CAS</h2>
|
||||
<p th:if="${rootCauseException != null and rootCauseException.code != null}"
|
||||
th:utext="#{${rootCauseException.code}}">rootCauseException.code</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.surrogates.account.selection.header}">Surrogate Account Selection View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-info">
|
||||
<form method="post" id="loginForm" class="fm-v clearfix">
|
||||
|
||||
<div class="alert alert-danger alert-dismissible fade show" th:if="${flowRequestContext.messageContext.hasErrorMessages()}">
|
||||
<span th:each="message : ${flowRequestContext.messageContext.allMessages}" th:utext="#{${message.text}}">Message Text</span>
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<h2 th:text="#{screen.surrogates.choose.account}">Choose Account</h2>
|
||||
<div th:utext="#{screen.surrogates.message}">
|
||||
<p>You are provided with a list of accounts on behalf of which you are allowed to authenticate. </p>
|
||||
<p>Select one and continue.</p>
|
||||
</div>
|
||||
<label for="surrogateTarget" class="fl-label">Account:</label>
|
||||
<select name="surrogateTarget" id="surrogateTarget" class="form-control">
|
||||
<option th:each="surrogate: ${surrogates}" th:value="${surrogate}" th:text="${surrogate}"/>
|
||||
</select>
|
||||
|
||||
|
||||
</div>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input class="btn btn-submit" name="submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" type="submit" value="Login"/>
|
||||
|
||||
<a class="btn btn-danger" id="cancel" name="cancel"
|
||||
th:unless="${service}"
|
||||
th:href="@{/login}" th:text="#{screen.surrogates.button.cancel}">Cancel</a>
|
||||
<a class="btn btn-primary" id="login" name="login"
|
||||
th:if="${service}"
|
||||
th:href="${service.id}" th:text="#{screen.error.page.loginagain}">Login</a>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.swivel.pagetitle}">Swivel Login View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<h3 th:text="#{cas.mfa.swivel.label.header}">Swivel Authentication</h3>
|
||||
|
||||
<form method="post" id="fm1" class="fm-v clearfix" th:object="${credential}" th:action="@{/login}">
|
||||
<div id="msg" class="alert alert-danger errors" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">Error message</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<p class="text-center">
|
||||
<img th:src="@{/swivel/turingImage(principal=${principal})}"
|
||||
src="http://via.placeholder.com/150x50"/>
|
||||
</p>
|
||||
|
||||
<label for="token" class="fl-label" th:utext="#{cas.mfa.swivel.label.token}">Token:</label>
|
||||
<input type="password" class="form-control required" required id="token" size="25" tabindex="1"
|
||||
th:field="*{token}"
|
||||
th:accesskey="#{screen.welcome.label.password.accesskey}" autocomplete="off"/>
|
||||
</div>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="4" type="submit" value="Login"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.u2f.pagetitle}">U2f Login View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
<script th:src="@{/js/u2f/u2f-api.js}"></script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
|
||||
/*<![CDATA[*/
|
||||
|
||||
var appId = /*[[${u2fAuth.appId}]]*/;
|
||||
|
||||
var version = /*[[${u2fAuth.version}]]*/;
|
||||
|
||||
var challenge = /*[[${u2fAuth.challenge}]]*/;
|
||||
|
||||
var keyHandle = /*[[${u2fAuth.keyHandle}]]*/;
|
||||
|
||||
setTimeout(function () {
|
||||
var registeredKeys = [{version: version, keyHandle: keyHandle}];
|
||||
|
||||
u2f.sign(appId, challenge, registeredKeys, function (data) {
|
||||
var form = document.getElementById('form');
|
||||
var reg = document.getElementById('tokenResponse');
|
||||
reg.value = JSON.stringify(data);
|
||||
form.submit();
|
||||
});
|
||||
}, 1000);
|
||||
|
||||
/*]]>*/
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<div class="alert alert-info">
|
||||
<h3 th:text="#{cas.mfa.u2f.authentication.device}">Authenticate Device</h3>
|
||||
<div th:utext="#{cas.mfa.u2f.authentication.message}">
|
||||
<p><strong>Please touch the flashing U2F device now.</strong></p>
|
||||
<p> You may be prompted to allow the site permission to access your security keys. After granting
|
||||
permission, the device will start to blink.</p>
|
||||
</div>
|
||||
|
||||
<form method="POST" id="form" th:object="${credential}" th:action="@{/login}">
|
||||
<input type="hidden" name="tokenResponse" id="tokenResponse" th:field="*{token}"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.u2f.pagetitle}">U2f Registration View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
<script th:src="@{/js/u2f/u2f-api.js}"></script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
setTimeout(function () {
|
||||
var appId = /*[[${u2fReg.appId}]]*/;
|
||||
|
||||
var version = /*[[${u2fReg.version}]]*/;
|
||||
|
||||
var challenge = /*[[${u2fReg.challenge}]]*/;
|
||||
|
||||
var registerRequests = [{version: version, challenge: challenge}];
|
||||
console.log(appId, registerRequests);
|
||||
u2f.register(appId, registerRequests, [], function (data) {
|
||||
var form = document.getElementById('form');
|
||||
var reg = document.getElementById('tokenResponse');
|
||||
if (data.errorCode) {
|
||||
console.log('U2F failed: error ' + data.errorCode);
|
||||
return;
|
||||
}
|
||||
reg.value = JSON.stringify(data);
|
||||
form.submit();
|
||||
});
|
||||
}, 1000);
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<div class="alert alert-info">
|
||||
<h3 th:text="#{cas.mfa.u2f.register.device}">Register Device</h3>
|
||||
<div th:utext="#{cas.mfa.u2f.authentication.message}">
|
||||
<p><strong>Please touch the flashing U2F device now.</strong></p>
|
||||
<p> You may be prompted to allow the site permission to access your security keys. After granting
|
||||
permission, the device will start to blink.</p>
|
||||
</div>
|
||||
|
||||
<form method="POST" id="form">
|
||||
<input type="hidden" name="tokenResponse" id="tokenResponse"/>
|
||||
<input type="hidden" name="_eventId" value="submit"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title>Wsfederation Webflow Stopped</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
Either the authentication request was rejected/cancelled, or
|
||||
the authentication provider denied access due to permissions, etc. Review logs to find the root cause of
|
||||
the issue.
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.yubikey.pagetitle}">YubiKey Login View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<form method="post" id="yubiKeyForm" th:object="${credential}" th:action="@{/login}">
|
||||
<div class="alert alert-info" th:text="#{cas.mfa.yubikey.authenticate}">
|
||||
Use your registered YubiKey device to authenticate.
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger" th:if="${#fields.hasErrors('*')}">
|
||||
<span th:each="err : ${#fields.errors('*')}" th:utext="${err}">Error message</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="token" th:utext="#{screen.welcome.label.password}"><span class="accesskey">P</span>assword:</label>
|
||||
|
||||
<input type="password" class="form-control required" required id="token" size="25" tabindex="1"
|
||||
th:field="*{token}"
|
||||
th:accesskey="#{screen.welcome.label.password.accesskey}" autocomplete="off"/>
|
||||
</div>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="l"
|
||||
th:value="#{screen.welcome.button.login}" tabindex="2" type="submit" value="Login"/>
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
<input type="hidden" name="geolocation"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{cas.mfa.yubikey.pagetitle}">YubiKey Registration View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="login">
|
||||
<form method="post" id="yubiKeyForm" class="fm-v clearfix">
|
||||
<div class="alert alert-info" th:text="#{cas.mfa.yubikey.register}">
|
||||
Your device is not yet registered. Use the below form to register your device with CAS.
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="token" class="fl-label" th:utext="#{cas.mfa.yubikey.label.token}">Token:</label>
|
||||
<input type="password" class="form-control" required id="token" th:name="token"
|
||||
size="25" tabindex="1"
|
||||
autocomplete="off"/>
|
||||
</div>
|
||||
<input class="btn btn-submit" name="_eventId_submit" accesskey="s"
|
||||
th:value="#{screen.welcome.button.register}" tabindex="2" type="submit" value="Register"/>
|
||||
|
||||
<input type="hidden" name="execution" th:value="${flowExecutionKey}"/>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.unavailable.header}">CAS Error View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
function showErrorDetails() {
|
||||
$("#errorMsg").hide();
|
||||
$("#errorDetails").empty();
|
||||
$("#errorDetails").append("<p><pre style='white-space: pre-wrap;'>" + /*[[${#strings.escapeXml(trace)}]]*/ +"</pre></p>");
|
||||
}
|
||||
/*]]>*/
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.unavailable.heading(${status},${error})}">CAS is unable to process this request: "{0}:{1}"</h2>
|
||||
<div th:utext="#{screen.unavailable.message}">screen.unavailable.message would go here</div>
|
||||
<pre id="errorMsg" class="mt-4" style="white-space: pre-wrap;" th:text="${'Error: ' + message}">error message would go here</pre>
|
||||
<p id="errorDetails">
|
||||
<button type="button" class="btn btn-shutdown"
|
||||
onclick="showErrorDetails();">View Details
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<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 th:text="#{screen.error.page.title.accessdenied}">Error - 401</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.error.page.accessdenied}">Access Denied</h2>
|
||||
<p th:utext="#{screen.error.page.permissiondenied}">You do not have permission to view this page.</p>
|
||||
<a class="btn btn-submit" th:href="@{/login}" th:utext="#{screen.error.page.loginagain}">Login
|
||||
Again</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<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 th:text="#{screen.error.page.title.permissiondenied}">Error - Permission Denied</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.error.page.authdenied}">Authorization Denied</h2>
|
||||
<p th:utext="#{screen.error.page.permissiondenied}">You do not have permission to view this page.</p>
|
||||
<a class="btn btn-submit" th:href="@{/login}" th:utext="#{screen.error.page.loginagain}">Login Again</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<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 th:text="#{screen.error.page.title.pagenotfound}">Error - Page Not Found</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-info">
|
||||
<h2 th:utext="#{screen.error.page.notfound}">Page Not Found</h2>
|
||||
<p th:utext="#{screen.error.page.doesnotexist}">The page you are attempting to access does not exist at the
|
||||
moment.</p>
|
||||
<a class="btn btn-submit" th:href="@{/login}" th:utext="#{screen.error.page.loginagain}">Login
|
||||
Again</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<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 th:text="#{screen.error.page.title.requestunsupported}">Error - Unsupported Request</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.error.page.requestunsupported}">The request type or syntax is not supported.</h2>
|
||||
<p th:utext="#{screen.error.page.permissiondenied}">You do not have permission to view this page.</p>
|
||||
<a class="btn btn-submit" th:href="@{/login}" th:utext="#{screen.error.page.loginagain}">Login
|
||||
Again</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<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 th:text="#{screen.error.page.title.blocked}">Error - Permission Denied</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.blocked.header}">Access Denied</h2>
|
||||
<p th:utext="#{screen.blocked.message}">You've entered the wrong password for the user too many times.
|
||||
You've been throttled.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+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>
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||||
<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 layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">CAS – Central Authentication Service</title>
|
||||
|
||||
<link rel="stylesheet" th:href="@{#{webjars.fontawesomemin.css}}"/>
|
||||
<link type="text/css" rel="stylesheet" th:href="@{#{webjars.latomin.css}}"/>
|
||||
|
||||
<!--/* Core CAS CSS */-->
|
||||
<link rel="stylesheet" href="../static/css/cas.css" th:href="@{${#themes.code('cas.standard.css.file')}}"/>
|
||||
|
||||
<link rel="icon" th:href="@{/favicon.ico}" type="image/x-icon"/>
|
||||
|
||||
<script type="text/javascript" th:src="@{#{webjars.jquerymin.js}}"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div th:replace="fragments/header :: header">
|
||||
<a href="fragments/header.html">Header</a> fragment will go here
|
||||
</div>
|
||||
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content" id="content">
|
||||
CAS content will go here
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div th:replace="fragments/footer :: footer">
|
||||
<a href="fragments/footer.html">Footer</a> fragment will go here
|
||||
</div>
|
||||
|
||||
<script th:replace="fragments/scripts"/>
|
||||
</body>
|
||||
</html>
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.mfaDenied.heading}">MFA Denied View</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.mfaDenied.heading}">MFA attempt is denied.</h2>
|
||||
<p th:utext="#{screen.mfaDenied.message}">Your MFA provider has denied your attempt at second factor
|
||||
authentication. Contact your system administrator for help in restoring your account.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
|
||||
<title th:text="#{screen.mfaUnavailable.header}">MFA Provider Unavailable</title>
|
||||
<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main role="main" class="container mt-3 mb-3">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-danger">
|
||||
<h2 th:utext="#{screen.mfaUnavailable.heading}">MFA Provider Unavailable</h2>
|
||||
<p th:utext="#{screen.mfaUnavailable.message}">Your MFA provider is currently unvailable.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.attrresolutionview.pagetitle}"></title>
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var urls = {
|
||||
resolveAttributes: /*[[@{/status/attrresolution/resolveattrs}]]*/,
|
||||
releaseAttributes: /*[[@{/status/attrresolution/releaseattrs}]]*/
|
||||
};
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/attrresolution.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div layout:fragment="content">
|
||||
<div id="attrResolution">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link active" href="#attributeResolutionPanel"
|
||||
th:text="#{cas.attrresolutionview.pagetitle}"/></li>
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link" href="#attributeReleasePanel"
|
||||
th:text="#{cas.attrreleaseview.pagetitle}"/></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content clearfix">
|
||||
<div class="tab-pane active" id="attributeResolutionPanel">
|
||||
<h3 th:text="#{cas.attrresolutionview.pagetitle}"/>
|
||||
<p>Allow CAS to execute a query against configured attribute repositories to determine the set of
|
||||
attributes that may be retrieved and resolved for
|
||||
a given user. Note that this functionality is only productive if CAS is configured to
|
||||
<strong>NOT</strong> directly retrieve attributes as part of
|
||||
the authentication attempt.
|
||||
<p/>
|
||||
|
||||
<div class="" id="">
|
||||
|
||||
<form method="post" id="fm1" class="">
|
||||
<div class="form-group">
|
||||
<label for="uid" class="fl-label" th:utext="#{cas.attrresolutionview.label.uid}"></label>
|
||||
<input type="text" class="form-control"
|
||||
size="35"
|
||||
tabindex="0"
|
||||
id="uid"
|
||||
name="uid"
|
||||
autocomplete="off" required/>
|
||||
</div>
|
||||
<input class="btn btn-success"
|
||||
name="_eventId_submit"
|
||||
accesskey="l"
|
||||
th:value="#{cas.attrresolutionview.button.submit}"
|
||||
tabindex="1"
|
||||
id="submitResolve"
|
||||
type="submit"/>
|
||||
</form>
|
||||
|
||||
<div class="alert alert-info" id="status"></div>
|
||||
|
||||
<table id="attributesTable" class="table table-striped table-bordered mt-3">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Attribute</th>
|
||||
<th>Value(s)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="attributeReleasePanel">
|
||||
<h3 th:text="#{cas.attrreleaseview.pagetitle}"/>
|
||||
<p>Allow CAS to determine the collection of attributes that will be released to a given application. The
|
||||
application will be matched against the CAS service registry to find the corresponding record whose
|
||||
associated policies determine released attributes, etc.
|
||||
<p/>
|
||||
|
||||
<form method="post" id="fmrel" class="">
|
||||
<div class="form-group">
|
||||
<label for="username" class="fl-label">Username:</label>
|
||||
<input type="text" class="form-control"
|
||||
size="35"
|
||||
tabindex="0"
|
||||
id="username"
|
||||
name="username"
|
||||
placeholder="Username..."
|
||||
autocomplete="off" required/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password" class="fl-label">Password:</label>
|
||||
<input type="password" class="form-control"
|
||||
size="35"
|
||||
tabindex="0"
|
||||
id="password"
|
||||
name="password"
|
||||
placeholder="Password..."
|
||||
autocomplete="off" required/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="service" class="fl-label">Service:</label>
|
||||
<input type="text" class="form-control"
|
||||
size="35"
|
||||
tabindex="0"
|
||||
id="service"
|
||||
name="service"
|
||||
placeholder="Application URL (i.e. https://app.example.org)"
|
||||
autocomplete="off" required/>
|
||||
</div>
|
||||
<input class="btn btn-success"
|
||||
name="_eventId_submit"
|
||||
accesskey="l"
|
||||
th:value="#{cas.attrresolutionview.button.submit}"
|
||||
tabindex="1"
|
||||
id="submitRelease"
|
||||
type="submit"/>
|
||||
</form>
|
||||
|
||||
<div id="validationresult" class="mt-3">
|
||||
<h3>Response</h3>
|
||||
<div id="validationresponse"></div>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link active" href="#cas1">CAS v1</a>
|
||||
</li>
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link" href="#cas2">CAS v2</a></li>
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link" href="#cas3Xml">CAS v3 XML</a>
|
||||
</li>
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link" href="#cas3Json">CAS v3 JSON</a>
|
||||
</li>
|
||||
<li class="nav-item"><a data-toggle="tab" class="nav-link" href="#serviceJson">Service</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="cas1"></div>
|
||||
<div class="tab-pane" id="cas2"></div>
|
||||
<div class="tab-pane" id="cas3Xml"></div>
|
||||
<div class="tab-pane" id="cas3Json"></div>
|
||||
<div class="tab-pane" id="serviceJson"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div th:replace="monitoring/fragments/footerButtons"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<div class="mt-5">
|
||||
<p/>
|
||||
<a class="btn btn-success" th:href="@{/status/dashboard}" th:text="#{cas.dashboard.section.dashboard.title}" />
|
||||
<a class="btn btn-success" href="#" onclick="location.reload();" th:text="#{cas.ssosessions.button.refresh}" />
|
||||
</div>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
<header>
|
||||
<a id="logo" href="http://www.apereo.org" th:title="#{logo.title}">Apereo</a>
|
||||
<h1>Apereo Central Authentication Service (CAS)</h1>
|
||||
</header>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||||
<body layout:fragment="modal(modalId, modalHeader, modalButtons, modalTopClose)">
|
||||
<div th:id="${modalId}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button th:unless="${modalTopClose} == false" type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" th:id="${modalId} + '-label'" th:text="${modalHeader}">Modal title</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div layout:fragment="modal-content">
|
||||
<p>My modal content</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer" th:if="${modalButtons}">
|
||||
<button th:unless="${hideCancel} == false" type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Ok</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
<script th:src="@{#{webjars.headmin.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>
|
||||
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||||
|
||||
<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"/>
|
||||
|
||||
<link rel="icon" th:href="@{/favicon.ico}" type="image/x-icon"/>
|
||||
<title layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">Central Authentication Service</title>
|
||||
|
||||
<link rel="stylesheet" th:href="@{#{webjars.fontawesomemin.css}}"/>
|
||||
<link rel="stylesheet" th:href="@{${#themes.code('cas.admin.css.file')}}" />
|
||||
|
||||
<script type="text/javascript" th:src="@{#{webjars.jquerymin.js}}"></script>
|
||||
<script type="text/javascript" th:src="@{#{webjars.semanticui.semantic.js}}"></script>
|
||||
<script type="text/javascript" th:src="@{#{webjars.jqueryui.js}}"></script>
|
||||
<script type="text/javascript" th:src="@{#{webjars.jquerycookie.js}}"></script>
|
||||
|
||||
<script th:src="@{#{webjars.bootstrapmin.js}}"></script>
|
||||
|
||||
<script th:src="@{#{webjars.datatables.jquery.datatablesmin.js}}"></script>
|
||||
<script th:src="@{#{webjars.datatables.datatables.bootstrapmin.js}}"></script>
|
||||
<script th:src="@{#{webjars.mindmup.editable-table.js}}"></script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var trackGeoLocation = /*[[${trackGeoLocation}]]*/ === "true";
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div th:replace="fragments/header :: header">
|
||||
<a href="fragments/header.html">Header</a> fragment will go here
|
||||
</div>
|
||||
|
||||
|
||||
<main role="main" class="container">
|
||||
<div layout:fragment="content" id="content">
|
||||
CAS content will go here
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div th:replace="fragments/footer :: footer">
|
||||
<a href="fragments/footer.html">Footer</a> fragment will go here
|
||||
</div>
|
||||
|
||||
<script th:replace="monitoring/fragments/scripts"/>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title>Authentication Events</title>
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var urls = {
|
||||
getEvents: /*[[@{/status/authnEvents/getEvents}]]*/
|
||||
};
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/css/authnEvents.css}]]*/
|
||||
);
|
||||
head.load(
|
||||
/*[[@{/js/authnEvents.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
|
||||
<div id="authnEvents">
|
||||
<h3>Manage Authentication Events</h3>
|
||||
|
||||
<div class="tabsContainer">
|
||||
<!-- Nav tabs -->
|
||||
<ul id="myTabs" class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="nav-item"><a class="nav-link active" href="#authnEvents"
|
||||
aria-controls="authnEvents" role="tab"
|
||||
data-toggle="tab">Authentication Events</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" id="authnEventsTab">
|
||||
<table id="authnEventsTable" class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Principal</th>
|
||||
<th>Created</th>
|
||||
<th>Timestamp</th>
|
||||
<th>User Agent</th>
|
||||
<th>Client IP</th>
|
||||
<th>Server IP</th>
|
||||
<th>Geo Lat.</th>
|
||||
<th>Geo Long.</th>
|
||||
<th>Geo Accuracy</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:replace="monitoring/fragments/footerButtons"/>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.w3.org/1999/xhtml"
|
||||
layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.viewconfig.pagetitle}"></title>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div id="container">
|
||||
<div layout:fragment="content">
|
||||
<link rel="stylesheet" th:href="@{#{webjars.jqueryui.themes.cupertino.jquery-ui.css}}"/>
|
||||
<link rel="stylesheet" th:href="@{#{webjars.datatables-plugins.jqueryui.css}}"/>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
var urls = {
|
||||
getConfiguration: /*[[@{/status/config/getConfiguration}]]*/,
|
||||
updateConfiguration: /*[[@{/status/config/updateConfiguration}]]*/,
|
||||
};
|
||||
var updateEnabled = /*[[${enableUpdate}]]*/ === "true" ;
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/viewConfig.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="viewConfig">
|
||||
<div id="loadingMessage"><h3 th:text="#{cas.viewconfig.loading}"/></div>
|
||||
|
||||
<div id="viewConfigError">
|
||||
<h2 th:text="#{cas.viewconfig.errormessage}"></h2>
|
||||
<div>
|
||||
<input class="btn btn-success" type="button" onclick="location.reload();" th:value="#{cas.viewconfig.button.refresh}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="view-configuration">
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 th:text="#{cas.viewconfig.pagetitle}">
|
||||
<span class="glyphicon glyphicon-cog" aria-hidden="true"/>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<div id="alertWrapper" style="display:none" class="alert alert-dismissible" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<p id="resultText"></p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="containers-table" class="container-fluid">
|
||||
|
||||
<table id="viewConfigsTable" class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th th:text="#{cas.viewconfig.table.column.key}"/>
|
||||
<th th:text="#{cas.viewconfig.table.column.value}"/>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="monitoring/fragments/footerButtons"></div>
|
||||
|
||||
<div th:if="${enableRefresh}">
|
||||
<form th:method="${refreshMethod}" th:action="${refreshEndpoint}" id="formRefreshCAS">
|
||||
<button class="btn btn-refresh"
|
||||
type="button"
|
||||
th:inline="text"
|
||||
th:attr="data-disabled=true,data-title=foo,data-message=bar">
|
||||
<i class="fa fa-refresh"></i> [[#{cas.dashboard.action.button.refresh}]]
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div layout:include="monitoring/fragments/modal :: modal(
|
||||
modalId='refreshModal',
|
||||
modalHeader=#{cas.dashboard.action.button.refresh.modal.title},
|
||||
modalButtons='true',
|
||||
modalTopClose=false,
|
||||
hideCancel=false
|
||||
)"
|
||||
th:remove="tag">
|
||||
<p layout:fragment="modal-content"><span
|
||||
th:text="#{cas.dashboard.action.button.refresh.modal.message}"></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.configmetadata.pagetitle}"></title>
|
||||
<link rel="stylesheet" th:href="@{#{webjars.jqueryui.themes.cupertino.jquery-ui.css}}"/>
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
|
||||
/*<![CDATA[*/
|
||||
|
||||
var urls = {
|
||||
search: /*[[@{/status/configmetadata/search?name={query}}]]*/
|
||||
};
|
||||
|
||||
/*]]>*/
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/viewConfigMetadata.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
<h3 th:text="#{cas.configmetadata.pagetitle}"></h3>
|
||||
<p>CAS ships with meta-data files that provide details of all supported configuration properties and settings. You
|
||||
may query the metadata repository
|
||||
here to search for specific CAS settings and properties.
|
||||
<p/>
|
||||
<p>
|
||||
Property names can be specified in very relaxed terms. For instance <code>cas.someProperty</code>, <code>cas.some-property</code>,
|
||||
<code>cas.some_property</code>
|
||||
and <code>CAS_SOME_PROPERTY</code> are all valid names.
|
||||
</p>
|
||||
<div>
|
||||
<div class="ui search">
|
||||
<div class="ui left icon input form-group">
|
||||
<label for="searchField" class="sr-only">Enter search term</label>
|
||||
<input id="searchField" class="prompt form-control input-lg" type="text"
|
||||
placeholder="Search CAS...">
|
||||
</div>
|
||||
</div>
|
||||
<p/>
|
||||
</div>
|
||||
|
||||
<div id="accordion">
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+199
@@ -0,0 +1,199 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.dashboard.pagetitle}"></title>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
|
||||
<div class="viewDashboard">
|
||||
|
||||
<div class="app-launcher clearfix">
|
||||
<h1 th:inline="text"><i class="fa fa-dashboard"></i>[[#{cas.dashboard.section.dashboard.title}]]</h1>
|
||||
|
||||
<div class="alert alert-warning" th:if="${!dashboardEndpointsEnabled}">
|
||||
<p>No dashboard functionality/endpoint is configured and accessible.
|
||||
Unless you teach CAS otherwise, <strong>all endpoints are disabled by default.</strong>
|
||||
Revisit the CAS configuration/documentation and explicitly enable access for desired endpoints and knobs.
|
||||
</p>
|
||||
</div>
|
||||
<ul>
|
||||
<li th:if="${healthCheckEndpointEnabled}">
|
||||
<a th:href="@{/status}" class="casTooltip">Status
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.status}"></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li th:if="${actuatorEndpointsEnabled and autoConfigurationEndpointEnabled}">
|
||||
<a th:href="@{/status/autoconfig}" class="casTooltip">
|
||||
Auto Configuration
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.autoconfiguration}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and beansEndpointEnabled}">
|
||||
<a th:href="@{/status/beans}" class="casTooltip">Beans
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.beans}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and mappingsEndpointEnabled}" class="casTooltip">
|
||||
<a th:href="@{/status/mappings}">Endpoint Mappings
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.mappings}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and configPropsEndpointEnabled}" class="casTooltip">
|
||||
<a th:href="@{/status/configprops}">Configuration Properties
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.configprops}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and dumpEndpointEnabled}">
|
||||
<a th:href="@{/status/dump}" class="casTooltip">Thread Dump
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.dump}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and environmentEndpointEnabled}">
|
||||
<a th:href="@{/status/env}" class="casTooltip">Environment
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.env}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and healthEndpointEnabled}">
|
||||
<a th:href="@{/status/health}" class="casTooltip">Health
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.health}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and infoEndpointEnabled}">
|
||||
<a th:href="@{/status/info}" class="casTooltip">Info
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.info}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${metricsEndpointEnabled}">
|
||||
<a th:href="@{/status/metrics}" class="casTooltip">Metrics
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.metrics}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${actuatorEndpointsEnabled and traceEndpointEnabled}">
|
||||
<a th:href="@{/status/trace}" class="casTooltip">Trace Requests
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.trace}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${statisticsEndpointEnabled}">
|
||||
<a th:href="@{/status/stats}" class="casTooltip">Statistics Panel
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.stats}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${environmentEndpointEnabled and configurationStateEnabled}">
|
||||
<a th:href="@{/status/config}" class="casTooltip">Configuration Panel
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.configpanel}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${configurationMetadataEndpointEnabled}">
|
||||
<a th:href="@{/status/configmetadata}" class="casTooltip">Configuration Metadata
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.configmetadata}"></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li th:if="${singleSignOnReportEnabled}">
|
||||
<a th:href="@{/status/ssosessions}" class="casTooltip">SSO Sessions
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.ssosessions}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${singleSignOnStatusEndpointEnabled}">
|
||||
<a th:href="@{/status/sso}" class="casTooltip">SSO Status
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.ssostatus}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${servicesEndpointEnabled}">
|
||||
<a th:href="@{/status/services}" class="casTooltip">Registered Services
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.services}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${springWebflowEndpointEnabled}">
|
||||
<a th:href="@{/status/swf}" class="casTooltip">Webflow Report
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.swf}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${auditLogEndpointEnabled}">
|
||||
<a th:href="@{/status/logging}" class="casTooltip">Logging
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.logging}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${attributeResolutionEndpointEnabled}">
|
||||
<a th:href="@{/status/attrresolution}" class="casTooltip">Attribute Resolution & Release
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.attrresolution}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${discoveryProfileEndpointEnabled}">
|
||||
<a th:href="@{/status/discovery}" class="casTooltip">Discovery Profile
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.discovery}"></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li th:if="${trustedDevicesEnabled}">
|
||||
<a th:href="@{/status/trustedDevs}" class="casTooltip">Trusted Devices
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.trusteddevs}"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li th:if="${authenticationEventsRepositoryEnabled}">
|
||||
<a th:href="@{/status/authnEvents}" class="casTooltip">AuthN Events
|
||||
<span class="tooltiptext" th:text="#{cas.dashboard.tooltip.authnevents}"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="server-functions" th:if="${restartEndpointEnabled or shutdownEndpointEnabled}">
|
||||
<h2 th:inline="text"><i class="fa fa-server"></i>[[#{cas.dashboard.section.server.functions.title}]]</h2>
|
||||
<ul>
|
||||
<li th:if="${restartEndpointEnabled}">
|
||||
<form method="post" th:action="@{/status/restart}">
|
||||
<button class="btn btn-restart"
|
||||
type="button"
|
||||
data-toggle="modal"
|
||||
data-target="#myModal"
|
||||
th:inline="text"
|
||||
th:attr="data-title=#{cas.dashboard.action.button.reboot.modal.title},data-message=#{cas.dashboard.action.button.reboot.modal.message}"
|
||||
>
|
||||
<i class="fa fa-undo"></i>[[#{cas.dashboard.action.button.reboot}]]
|
||||
</button>
|
||||
</form>
|
||||
</li>
|
||||
<li th:if="${shutdownEndpointEnabled}">
|
||||
<form method="post" th:action="@{/status/shutdown}">
|
||||
<button type="button" class="btn btn-shutdown"
|
||||
data-toggle="modal"
|
||||
data-target="#myModal"
|
||||
th:inline="text"
|
||||
th:attr="data-title=#{cas.dashboard.action.button.shutdown.modal.title},data-message=#{cas.dashboard.action.button.shutdown.modal.message}"
|
||||
>
|
||||
<i class="fa fa-power-off"></i>
|
||||
[[#{cas.dashboard.action.button.shutdown}]]
|
||||
</button>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div layout:include="monitoring/fragments/modal :: modal(modalId='myModal', modalHeader='Message', modalButtons='true')" th:remove="tag">
|
||||
<p layout:fragment="modal-content" />
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#myModal').on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
var modal = $(this);
|
||||
modal.find('.modal-title').text(button.data('title'));
|
||||
modal.find('.modal-body').text(button.data('message'));
|
||||
var form = $(event.relatedTarget).closest('form');
|
||||
modal.find('.modal-footer button.btn-primary').data('form', form);
|
||||
})
|
||||
|
||||
$('#myModal').find('.modal-footer button.btn-primary').on('click', function () {
|
||||
$(this).data('form').submit();
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.loggingdashboard.title}"></title>
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var logConfigFileLocation = /*[[${logConfigurationFile}]]*/;
|
||||
|
||||
var urls = {
|
||||
getConfiguration: /*[[@{/status/logging/getConfiguration}]]*/,
|
||||
getAuditLog: /*[[@{/status/logging/getAuditLog}]]*/,
|
||||
updateLevel: /*[[@{/status/logging/updateLoggerLevel}]]*/,
|
||||
reportsWebsocket: /*[[@{/reports-websocket}]]*/
|
||||
};
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/css/loggingDashboard.css}]]*/
|
||||
);
|
||||
head.load(
|
||||
/*[[@{/js/sockjs.js}]]*/,
|
||||
/*[[@{/js/stomp.js}]]*/,
|
||||
/*[[@{/js/loggingDashboard.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div layout:fragment="content">
|
||||
|
||||
<h2>Logging</h2>
|
||||
<div id="loggingDashboard">
|
||||
|
||||
<div id="loadingMessage" class="">
|
||||
<strong th:text="#{cas.loggingdashboard.loading}"/>
|
||||
</div>
|
||||
|
||||
<div id="errorLoadingData" class="alert alert-danger d-none">
|
||||
<h3 th:text="#{cas.loggingdashboard.loading.error}"/>
|
||||
<div>
|
||||
<input class="btn btn-success" type="button"
|
||||
onclick="location.reload();" th:value="#{cas.ssosessions.button.refresh}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tabsContainer d-none">
|
||||
<div id="alert-container"></div>
|
||||
|
||||
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="logger-tab" data-toggle="tab" href="#loggersTab" role="tab"
|
||||
aria-controls="loggersTab" aria-selected="true">Loggers</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="logOutput-tab" href="#logOutputTab" aria-controls="logOutput"
|
||||
role="tab" data-toggle="tab">CAS Log</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="auditLog-tab" data-toggle="tab" href="#auditLogTab" role="tab" aria-controls="auditLog" aria-selected="false">Audit Log</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content" id="myTabContent">
|
||||
<div class="tab-pane fade show active" id="loggersTab" role="tabpanel" aria-labelledby="logger-tab">
|
||||
<table id="loggersTable" class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th th:text="#{cas.loggingdashboard.logger}"/>
|
||||
<th th:text="#{cas.loggingdashboard.additive}"/>
|
||||
<th th:text="#{cas.loggingdashboard.state}"/>
|
||||
<th th:text="#{cas.loggingdashboard.level}"/>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>logger</td>
|
||||
<td>additive</td>
|
||||
<td>state</td>
|
||||
<td>level</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="logOutputTab" role="tabpanel" aria-labelledby="logOutput-tab">
|
||||
<div id="websocketStatus" class="alert alert-info" style="visibility:hidden"></div>
|
||||
|
||||
<textarea id="logoutputarea" rows="20" cols="20"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="auditLogTab" role="tabpanel" aria-labelledby="auditLog-tab">
|
||||
<table id="auditLogTable" class="display table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Who</th>
|
||||
<th>What</th>
|
||||
<th>Action</th>
|
||||
<th>When</th>
|
||||
<th>Client IP</th>
|
||||
<th>Server IP</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody/>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="monitoring/fragments/footerButtons"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.ssosessions.report.pagetitle}"></title>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
<link rel="stylesheet" th:href="@{/css/ssosessions.css}"/>
|
||||
|
||||
<div id="content">
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
var urls = {
|
||||
destroy: {
|
||||
all: /*[[@{/status/ssosessions/destroySsoSessions}]]*/,
|
||||
single: /*[[@{/status/ssosessions/destroySsoSession}]]*/
|
||||
},
|
||||
getSessions: /*[[@{/status/ssosessions/getSsoSessions}]]*/
|
||||
};
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/ssosessions.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="ssoSessions">
|
||||
<div id="loadingMessage"><h3 th:text="#{cas.ssosessions.loading}"/></div>
|
||||
|
||||
<div id="no-cas-sessions">
|
||||
<h3 th:text="#{cas.ssosessions.nosessionsfound}"/>
|
||||
<p/>
|
||||
</div>
|
||||
|
||||
<div id="cas-sessions">
|
||||
<div id="alertWrapper"></div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 th:text="#{cas.ssosessions.report.pagetitle}"><span class="glyphicon glyphicon-stats"
|
||||
aria-hidden="true"/></h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="session-counts" class="container-fluid">
|
||||
<div class="row adminPanels">
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="card text-white bg-info">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fas fa-users fa-4x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge" id="totalUsers">0</div>
|
||||
<div th:text="#{cas.ssosessions.report.panel.totalactiveprincipals}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="card text-white bg-success">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fas fa-tasks fa-4x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge" id="totalUsageSessions">0</div>
|
||||
<div th:text="#{cas.ssosessions.report.panel.usagecountsessions}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="card text-white bg-warning">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fas fa-ticket-alt fa-4x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge" id="totalTGTs">0</div>
|
||||
<div th:text="#{cas.ssosessions.report.panel.totalssosessions}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button id="removeAllSessionsButton" class="btn btn-sm btn-danger" type="button"
|
||||
value="ALL"
|
||||
th:text="#{cas.ssosessions.buttons.removeall}"/>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
<div id="filterButtons" class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons">
|
||||
<label class="btn btn-light active" data-filter="all">
|
||||
<input type="radio" name="options" id="optionAll" autocomplete="off"
|
||||
th:text="#{cas.ssosessions.buttons.filter.all}"/>
|
||||
</label>
|
||||
<label class="btn btn-light" data-filter="proxied">
|
||||
<input type="radio" name="options" id="optionProxied" autocomplete="off"
|
||||
th:text="#{cas.ssosessions.buttons.filter.proxied}"/>
|
||||
</label>
|
||||
<label class="btn btn-light" data-filter="non-proxied">
|
||||
<input type="radio" name="options" id="optionDirect" autocomplete="off"
|
||||
th:text="#{cas.ssosessions.buttons.filter.nonproxied}"/>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="container-stable" class="container-fluid">
|
||||
|
||||
<div id="msg" style="display:none"></div>
|
||||
<table id="ssoSessions" class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th> </th>
|
||||
<th th:text="#{cas.ssosessions.table.header.principal}"/>
|
||||
<th th:text="#{cas.ssosessions.table.header.ticketgrantingticket}"/>
|
||||
<th th:text="#{cas.ssosessions.table.header.authenticationdate}"/>
|
||||
<th th:text="#{cas.ssosessions.table.header.usagecount}"/>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>User</td>
|
||||
<td>TGT</td>
|
||||
<td>Auth_Date</td>
|
||||
<td>Usage_Count</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr/>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="monitoring/fragments/footerButtons"/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+160
@@ -0,0 +1,160 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.statistics.pagetitle}"></title>
|
||||
|
||||
<script type="text/javascript" th:src="@{#{webjars.d3js.d3min.js}}"></script>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
var messages = {
|
||||
memoryGaugeTitle: /*[[#{cas.statistics.section.serverstatistics.freememorygauge.label}]]*/
|
||||
};
|
||||
var urls = {
|
||||
availability: /*[[@{/status/stats/getAvailability}]]*/,
|
||||
memory: /*[[@{/status/stats/getMemStats}]]*/,
|
||||
tickets: /*[[@{/status/stats/getTicketStats}]]*/
|
||||
};
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/js/statisticsview.js}]]*/
|
||||
,
|
||||
function () {
|
||||
var server_uptime = upTime([[${upTime}]], 'uptime');
|
||||
|
||||
casStatistics(urls, messages);
|
||||
}
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div layout:fragment="content">
|
||||
|
||||
<div id="loading" th:text="#{cas.statistics.loading}"></div>
|
||||
|
||||
<div class="statisticsView">
|
||||
<h2 th:text="#{cas.statistics.pagetitle}">cas.statistics.pagetitle</h2>
|
||||
|
||||
<div class="section adminPanels">
|
||||
<h3 th:text="#{cas.statistics.section.ticket.title}">cas.statistics.section.ticket.title</h3>
|
||||
<div class="card-deck">
|
||||
<div class="card" id="card-unexpired-tgts">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title semi-huge"
|
||||
th:text="#{cas.statistics.section.ticket.panel.unexpiredtgts.title}"></h4>
|
||||
<p id="unexpiredTgts" class="card-text huge">--</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card" id="card-unexpired-sts">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title semi-huge" th:text="#{cas.statistics.section.ticket.panel.unexpiredsts.title}"/>
|
||||
<p id="unexpiredSts" class="card-text huge">--</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card" id="card-expired-tgts">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title semi-huge" th:text="#{cas.statistics.section.ticket.panel.expiredtgts.title}"/>
|
||||
<p id="expiredTgts" class="card-text huge">--</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" id="card-expired-sts">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title semi-huge" th:text="#{cas.statistics.section.ticket.panel.expiredsts.title}"/>
|
||||
<p id="expiredSts" class="card-text huge">--</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="runtimePanels">
|
||||
<h3 th:text="#{cas.statistics.section.serverstatistics.title}"></h3>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="text-center">
|
||||
<div class="section" id="memoryUsageWrapper">
|
||||
<div id="memoryGauge"></div>
|
||||
</div>
|
||||
<div id="maxMemoryWrapper">
|
||||
<div id="maxMemoryGauge"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div id="card-uptime" class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-auto mr-auto">
|
||||
<i class="far fa-clock fa-4x"></i>
|
||||
</div>
|
||||
<div class="col-auto text-right">
|
||||
<div class="huge" th:text="#{cas.statistics.section.serverstatistics.panel.uptime.title}"></div>
|
||||
<div id="uptime"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="card-server-info" class="card">
|
||||
<div class="card-header d-flex">
|
||||
<div class="fas fa-server fa-4x"></div>
|
||||
<div class="ml-auto huge" th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.title}"></div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-25"
|
||||
th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.label}"/>
|
||||
<th class="w-75"
|
||||
th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.value.label}"/>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.server.label}"/>
|
||||
<td th:text="${#httpServletRequest.getServerName() + '-' + #httpServletRequest.getLocalAddr()}"/>
|
||||
</tr>
|
||||
<tr th:if="${casTicketSuffix}">
|
||||
<td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.casticketsuffix.label}"/>
|
||||
<td th:text="${casTicketSuffix}"/>
|
||||
</tr>
|
||||
<tr>
|
||||
<td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.starttime.label}"/>
|
||||
<td th:text="${startTime}"/>
|
||||
</tr>
|
||||
<tr>
|
||||
<td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.memory.label}"/>
|
||||
<td><span id="freeMemory" th:text="${freeMemory}"/> MB
|
||||
<span th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.free}"/>
|
||||
<br/>
|
||||
<span id="totalMemory" th:text="${totalMemory}"/> MB
|
||||
<span th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.total}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.maxmemory.label}"/>
|
||||
<td>
|
||||
<span id="maxMemory" th:text="${maxMemory}"/> MB
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.availprocessors.label}"/>
|
||||
<td id="availableProcessors" th:text="${availableProcessors}"/>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div th:replace="monitoring/fragments/footerButtons"/>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
|
||||
|
||||
<head>
|
||||
<title>Trusted Devices</title>
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
var urls = {
|
||||
getRecords: /*[[@{/status/trustedDevs/getRecords}]]*/ ,
|
||||
revokeRecord: /*[[@{/status/trustedDevs/revokeRecord}]]*/
|
||||
};
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" th:inline="javascript">
|
||||
|
||||
function jqueryReady() {
|
||||
head.load(
|
||||
/*[[@{/css/trustedDevices.css}]]*/
|
||||
);
|
||||
head.load(
|
||||
/*[[@{/js/trustedDevices.js}]]*/
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
|
||||
<div id="trustedDevices">
|
||||
<h1>Manage Trusted Devices</h1>
|
||||
|
||||
<div class="tabsContainer row">
|
||||
<!-- Nav tabs -->
|
||||
<ul id="myTabs" class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="nav-item"><a class="nav-link active" href="#trustedDevices" aria-controls="trustedDevices" role="tab"
|
||||
data-toggle="tab">Trusted Devices</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" id="trustedDevicesTab">
|
||||
<table id="trustedDevicesTable" class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Principal</th>
|
||||
<th>Date</th>
|
||||
<th>Geography</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="monitoring/fragments/footerButtons"/>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' th:inline="text">
|
||||
<cas:proxyFailure th:attr="code=${code}">[[${description}]]</cas:proxyFailure>
|
||||
</cas:serviceResponse>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' th:inline="text">
|
||||
<cas:proxySuccess>
|
||||
<cas:proxyTicket>[[${ticket}]]</cas:proxyTicket>
|
||||
</cas:proxySuccess>
|
||||
</cas:serviceResponse>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' th:inline="text">
|
||||
<cas:authenticationFailure th:attr="code=${code}">[[${description}]]</cas:authenticationFailure>
|
||||
</cas:serviceResponse>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' th:inline="text">
|
||||
<cas:authenticationSuccess>
|
||||
<cas:user>[[${principal.id}]]</cas:user>
|
||||
<cas:proxyGrantingTicket th:if="${pgtIou}">[[${pgtIou}]]</cas:proxyGrantingTicket>
|
||||
<cas:proxies th:if="${not #lists.isEmpty(chainedAuthentications)}">
|
||||
<cas:proxy th:each="proxy : ${chainedAuthentications}">[[${proxy.principal.id}]]</cas:proxy>
|
||||
</cas:proxies>
|
||||
</cas:authenticationSuccess>
|
||||
</cas:serviceResponse>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' th:inline="text">
|
||||
<cas:authenticationFailure th:attr="code=${code}">[[${description}]]</cas:authenticationFailure>
|
||||
</cas:serviceResponse>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
|
||||
<cas:authenticationSuccess>
|
||||
<cas:user th:text="${principal.id}"/>
|
||||
<cas:proxyGrantingTicket th:if="${pgtIou}" th:text="${pgtIou}"/>
|
||||
<cas:proxies th:if="${not #lists.isEmpty(chainedAuthentications)}">
|
||||
<cas:proxy th:each="proxy : ${chainedAuthentications}" th:text="${proxy.principal.id}"/>
|
||||
</cas:proxies>
|
||||
<cas:attributes th:if="${not #lists.isEmpty(formattedAttributes)}">
|
||||
<div th:each="attr : ${formattedAttributes}" th:remove="tag">
|
||||
<div th:utext="${attr}" th:remove="tag"/>
|
||||
</div>
|
||||
</cas:attributes>
|
||||
</cas:authenticationSuccess>
|
||||
</cas:serviceResponse>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<body onload="document.acsForm.submit();" style="display:none">
|
||||
<form name="acsForm" th:action="${originalUrl}" method="post">
|
||||
<span th:each="entry : ${parameters}" th:remove="tag">
|
||||
<input type="hidden" th:name="${entry.key}" th:value="${entry.value}"/>
|
||||
</span>
|
||||
|
||||
<noscript>
|
||||
<p th:text="#{screen.post.response.message(${originalUrl})}"/>
|
||||
<p><input type="submit" th:value="#{screen.button.continue}"/></p>
|
||||
</noscript>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.oauth.confirm.pagetitle}"></title>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h2 th:text="#{screen.oauth.confirm.header}"/>
|
||||
<p th:text="#{screen.oauth.confirm.message(${serviceName})}"/>
|
||||
<p>
|
||||
<a class="btn btn-submit" id="allow" name="allow"
|
||||
th:href="@{${callbackUrl}}"
|
||||
th:text="#{screen.oauth.confirm.allow}"/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout}">
|
||||
|
||||
<head>
|
||||
<title th:text="#{cas.oauth.confirm.pagetitle}"></title>
|
||||
</head>
|
||||
|
||||
<body id="cas">
|
||||
<div layout:fragment="content">
|
||||
<div class="alert alert-success">
|
||||
<h1 th:text="#{screen.oauth.confirm.header}"/>
|
||||
|
||||
<div align="middle">
|
||||
<img th:src="${service.logo}" th:if="${service.logo}"/>
|
||||
<p th:text="${service.description}" />
|
||||
</div>
|
||||
|
||||
<div th:if="${dynamic}">
|
||||
<div class="alert alert-warning fade in" role="alert">
|
||||
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
|
||||
<strong th:utext="#{screen.oidc.confirm.dynamic(${dynamicTime})}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:unless="${#sets.isEmpty(scopes)}">
|
||||
<p th:text="#{screen.oidc.confirm.asksinfo}"/>
|
||||
|
||||
<span th:each="scope : ${scopes}">
|
||||
<div>
|
||||
<span class="glyphicon glyphicon-cog" aria-hidden="true"></span>
|
||||
<strong><code th:text="${scope}"/></strong>
|
||||
<p th:text="#{screen.oidc.confirm.scope.__${scope}__}"/>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<div th:if="${service.informationUrl}">
|
||||
<span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
|
||||
<a th:href="${service.informationUrl}" th:text="#{screen.oidc.confirm.infourl(${serviceName})}"/>
|
||||
</div>
|
||||
<div th:if="${service.privacyUrl}">
|
||||
<span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
|
||||
<a th:href="${service.privacyUrl}" th:utext="#{screen.oidc.confirm.privacyurl(${serviceName})}"/>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
|
||||
<strong>
|
||||
<h4 th:text="#{screen.oauth.confirm.message(${serviceName})}"/>
|
||||
</strong>
|
||||
<p>
|
||||
<a class="btn btn-submit" id="allow" name="allow"
|
||||
th:href="@{${callbackUrl}}"
|
||||
th:utext="#{screen.oauth.confirm.allow}"/>
|
||||
|
||||
<a th:if="${deniedApprovalUrl}"
|
||||
class="btn btn-danger" id="deny" name="deny"
|
||||
th:href="@{${deniedApprovalUrl}}"
|
||||
th:utext="#{screen.oauth.confirm.deny}"/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
ns:[(${ns})]
|
||||
enc_mac_key:[(${enc_mac_key})]
|
||||
assoc_type:[(${assoc_type})]
|
||||
dh_server_public:[(${dh_server_public})]
|
||||
session_type:[(${session_type})]
|
||||
expires_in:[(${expires_in})]
|
||||
assoc_handle:[(${assoc_handle})]
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
ns:[(${ns})]
|
||||
is_valid:[(${is_valid})]
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
ns:[(${ns})]
|
||||
is_valid:[(${is_valid})]
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta http-equiv="X-XRDS-Location" th:content="${openid_server + '/yadis.xml'}" />
|
||||
</head>
|
||||
</html>
|
||||
Reference in New Issue
Block a user