diff --git a/account/account.ftl b/account/account.ftl
new file mode 100755
index 0000000..d5592bb
--- /dev/null
+++ b/account/account.ftl
@@ -0,0 +1,65 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='account' bodyClass='user'; section>
+
+
+
+
${msg("editAccountHtmlTitle")}
+
+
+ * ${msg("requiredFields")}
+
+
+
+
+
+@layout.mainLayout>
diff --git a/account/applications.ftl b/account/applications.ftl
new file mode 100755
index 0000000..0c0906d
--- /dev/null
+++ b/account/applications.ftl
@@ -0,0 +1,86 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='applications' bodyClass='applications'; section>
+
+
+
+
${msg("applicationsHtmlTitle")}
+
+
+
+
+
+@layout.mainLayout>
diff --git a/account/federatedIdentity.ftl b/account/federatedIdentity.ftl
new file mode 100755
index 0000000..c2eb769
--- /dev/null
+++ b/account/federatedIdentity.ftl
@@ -0,0 +1,42 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='social' bodyClass='social'; section>
+
+
+
+
${msg("federatedIdentitiesHtmlTitle")}
+
+
+
+
+ <#list federatedIdentity.identities as identity>
+
+
+ ${identity.displayName!}
+
+
+
+
+
+ <#if identity.connected>
+ <#if federatedIdentity.removeLinkPossible>
+
+ #if>
+ <#else>
+
+ #if>
+
+
+ #list>
+
+
+@layout.mainLayout>
diff --git a/account/log.ftl b/account/log.ftl
new file mode 100644
index 0000000..29046cf
--- /dev/null
+++ b/account/log.ftl
@@ -0,0 +1,35 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='log' bodyClass='log'; section>
+
+
+
+
${msg("accountLogHtmlTitle")}
+
+
+
+
+
+
+ ${msg("date")}
+ ${msg("event")}
+ ${msg("ip")}
+ ${msg("client")}
+ ${msg("details")}
+
+
+
+
+ <#list log.events as event>
+
+ ${event.date?datetime}
+ ${event.event}
+ ${event.ipAddress}
+ ${event.client!}
+ <#list event.details as detail>${detail.key} = ${detail.value} <#if detail_has_next>, #if>#list>
+
+ #list>
+
+
+
+
+@layout.mainLayout>
\ No newline at end of file
diff --git a/account/password.ftl b/account/password.ftl
new file mode 100755
index 0000000..776792e
--- /dev/null
+++ b/account/password.ftl
@@ -0,0 +1,75 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='password' bodyClass='password'; section>
+
+
+
+
${msg("changePasswordHtmlTitle")}
+
+
+ ${msg("allFieldsRequired")}
+
+
+
+
+
+@layout.mainLayout>
diff --git a/account/resource-detail.ftl b/account/resource-detail.ftl
new file mode 100755
index 0000000..2c963d7
--- /dev/null
+++ b/account/resource-detail.ftl
@@ -0,0 +1,277 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='authorization' bodyClass='authorization'; section>
+
+
+
+
+
+
+
+ ${msg("myResources")} <#if authorization.resource.displayName??>${authorization.resource.displayName}<#else>${authorization.resource.name}#if>
+
+
+
+
+ <#if authorization.resource.iconUri??>
+
+
+ #if>
+
+
+
+
+ ${msg("peopleAccessResource")}
+
+
+
+
+
+
+
+
+ ${msg("user")}
+ ${msg("permission")}
+ ${msg("date")}
+ ${msg("action")}
+
+
+
+ <#if authorization.resource.shares?size != 0>
+ <#list authorization.resource.shares as permission>
+
+ #list>
+ <#else>
+
+ ${msg("resourceIsNotBeingShared")}
+
+ #if>
+
+
+
+
+
+
+
+
+ ${msg("resourceManagedPolicies")}
+
+
+
+
+
+
+
+
+ ${msg("description")}
+ ${msg("permission")}
+ ${msg("action")}
+
+
+
+ <#if authorization.resource.policies?size != 0>
+ <#list authorization.resource.policies as permission>
+
+ #list>
+ <#else>
+
+
+ ${msg("resourceNoPermissionsGrantingAccess")}
+
+
+ #if>
+
+
+
+
+
+
+
+
+ ${msg("shareWithOthers")}
+
+
+
+
+
+@layout.mainLayout>
diff --git a/account/resources.ftl b/account/resources.ftl
new file mode 100755
index 0000000..d86e8bc
--- /dev/null
+++ b/account/resources.ftl
@@ -0,0 +1,403 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='authorization' bodyClass='authorization'; section>
+
+
+
+
+
+ ${msg("myResources")}
+
+
+
+
+ <#if authorization.resourcesWaitingApproval?size != 0>
+
+
+
+ ${msg("needMyApproval")}
+
+
+
+
+
+
+
+
+ ${msg("resource")}
+ ${msg("requestor")}
+ ${msg("permissionRequestion")}
+ ${msg("action")}
+
+
+
+ <#list authorization.resourcesWaitingApproval as resource>
+ <#list resource.permissions as permission>
+
+ #list>
+ #list>
+
+
+
+
+ #if>
+
+
+
+
+ ${msg("myResourcesSub")}
+
+
+
+
+
+
+
+
+ ${msg("resourcesSharedWithMe")}
+
+
+
+
+
+ <#if authorization.sharedResources?size != 0>
+
+ #if>
+
+
+ <#if authorization.resourcesWaitingOthersApproval?size != 0>
+
+
+
+
+ ${msg("requestsWaitingApproval")}
+
+
+
+
+ #if>
+
+@layout.mainLayout>
\ No newline at end of file
diff --git a/account/sessions.ftl b/account/sessions.ftl
new file mode 100755
index 0000000..89dbf65
--- /dev/null
+++ b/account/sessions.ftl
@@ -0,0 +1,44 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='sessions' bodyClass='sessions'; section>
+
+
+
+
${msg("sessionsHtmlTitle")}
+
+
+
+
+
+
+ ${msg("ip")}
+ ${msg("started")}
+ ${msg("lastAccess")}
+ ${msg("expires")}
+ ${msg("clients")}
+
+
+
+
+ <#list sessions.sessions as session>
+
+ ${session.ipAddress}
+ ${session.started?datetime}
+ ${session.lastAccess?datetime}
+ ${session.expires?datetime}
+
+ <#list session.clients as client>
+ ${client}
+ #list>
+
+
+ #list>
+
+
+
+
+
+
+@layout.mainLayout>
diff --git a/account/totp.ftl b/account/totp.ftl
new file mode 100755
index 0000000..10a9cd2
--- /dev/null
+++ b/account/totp.ftl
@@ -0,0 +1,131 @@
+<#import "template.ftl" as layout>
+<@layout.mainLayout active='totp' bodyClass='totp'; section>
+
+
+
+
${msg("authenticatorTitle")}
+
+ <#if totp.otpCredentials?size == 0>
+
+ * ${msg("requiredFields")}
+
+ #if>
+
+
+ <#if totp.enabled>
+
+
+ <#if totp.otpCredentials?size gt 1>
+
+ ${msg("configureAuthenticators")}
+
+ <#else>
+
+ ${msg("configureAuthenticators")}
+
+ #if>
+
+
+ <#list totp.otpCredentials as credential>
+
+ ${msg("mobile")}
+ <#if totp.otpCredentials?size gt 1>
+ ${credential.id}
+ #if>
+ ${credential.userLabel!}
+
+
+
+
+ #list>
+
+
+ <#else>
+
+
+
+
+
+ ${msg("totpStep1")}
+
+
+ <#list totp.supportedApplications as app>
+ ${msg(app)}
+ #list>
+
+
+
+ <#if mode?? && mode = "manual">
+
+ ${msg("totpManualStep2")}
+ ${totp.totpSecretEncoded}
+ ${msg("totpScanBarcode")}
+
+
+ ${msg("totpManualStep3")}
+
+ ${msg("totpType")}: ${msg("totp." + totp.policy.type)}
+ ${msg("totpAlgorithm")}: ${totp.policy.getAlgorithmKey()}
+ ${msg("totpDigits")}: ${totp.policy.digits}
+ <#if totp.policy.type = "totp">
+ ${msg("totpInterval")}: ${totp.policy.period}
+ <#elseif totp.policy.type = "hotp">
+ ${msg("totpCounter")}: ${totp.policy.initialCounter}
+ #if>
+
+
+ <#else>
+
+ ${msg("totpStep2")}
+
+ ${msg("totpUnableToScan")}
+
+ #if>
+
+ ${msg("totpStep3")}
+ ${msg("totpStep3DeviceName")}
+
+
+
+
+
+
+ #if>
+
+@layout.mainLayout>
diff --git a/common/resources/css/index.css b/common/resources/css/index.css
index cb6b927..b8a2629 100644
--- a/common/resources/css/index.css
+++ b/common/resources/css/index.css
@@ -74,6 +74,8 @@ html {
.ps-form-group {
display: flex;
flex-direction: column; }
+ .ps-form-group--label {
+ display: flex; }
.ps-main {
display: flex;
@@ -100,17 +102,23 @@ html {
padding: 0; }
.ps-header {
- border-bottom: 0.5rem solid var(--foreground);
- background-color: var(--background);
display: flex;
padding: 0;
margin: 0; }
.ps-header--title {
font-size: 1.5rem;
- margin: 0; }
+ padding: 0 1rem;
+ margin: 0;
+ border-bottom: 0.5rem solid var(--foreground);
+ background-color: var(--background);
+ border-right: 0.5rem solid var(--foreground); }
.ps-header--nav {
margin-left: auto;
- display: flex; }
+ display: flex;
+ border-bottom: 0.5rem solid var(--foreground);
+ border-left: 0.5rem solid var(--foreground);
+ background-color: var(--background);
+ padding-left: 1rem; }
.ps-header--nav-list {
display: flex;
justify-content: flex-end;
@@ -198,7 +206,7 @@ html {
.ps-page--section-link-icon {
margin-left: 8px; }
.ps-page--section-contents {
- margin: 5vw;
+ margin: 2rem;
margin-bottom: 0;
font-weight: 500;
line-height: 1.4; }
diff --git a/common/resources/scss/form-group.scss b/common/resources/scss/form-group.scss
index adbf268..3338c5a 100644
--- a/common/resources/scss/form-group.scss
+++ b/common/resources/scss/form-group.scss
@@ -1,4 +1,8 @@
.ps-form-group {
display: flex;
flex-direction: column;
+
+ &--label {
+ display: flex;
+ }
}
diff --git a/common/resources/scss/header.scss b/common/resources/scss/header.scss
index e5fb2a4..4cccd5c 100644
--- a/common/resources/scss/header.scss
+++ b/common/resources/scss/header.scss
@@ -1,18 +1,24 @@
.ps-header {
- border-bottom: 0.5rem solid var(--foreground);
- background-color: var(--background);
display: flex;
padding: 0;
margin: 0;
&--title {
font-size: 1.5rem;
+ padding: 0 1rem;
margin: 0;
+ border-bottom: 0.5rem solid var(--foreground);
+ background-color: var(--background);
+ border-right: 0.5rem solid var(--foreground);
}
&--nav {
margin-left: auto;
display: flex;
+ border-bottom: 0.5rem solid var(--foreground);
+ border-left: 0.5rem solid var(--foreground);
+ background-color: var(--background);
+ padding-left: 1rem;
}
&--nav-list {
diff --git a/common/resources/scss/page.scss b/common/resources/scss/page.scss
index a82f4fc..14352fb 100644
--- a/common/resources/scss/page.scss
+++ b/common/resources/scss/page.scss
@@ -93,7 +93,7 @@
}
&--section-contents {
- margin: 5vw;
+ margin: 2rem;
margin-bottom: 0;
font-weight: 500;
line-height: 1.4;
diff --git a/login/template.ftl b/login/template.ftl
index ec8112d..18f6834 100644
--- a/login/template.ftl
+++ b/login/template.ftl
@@ -39,7 +39,7 @@
#if>
-
+
-