From aa168ed1d02ae6275d6bb88ed1db956c91090ac7 Mon Sep 17 00:00:00 2001 From: flashwave Date: Sun, 23 Sep 2018 03:32:18 +0200 Subject: [PATCH] Updated auth styles to match site styling. --- assets/less/auth/classes/button.less | 14 -- assets/less/auth/classes/container.less | 16 -- assets/less/auth/classes/form.less | 94 --------- assets/less/auth/classes/logout.less | 20 -- assets/less/auth/classes/text.less | 22 -- assets/less/auth/main.less | 9 - assets/less/classes/auth.less | 37 ++++ assets/less/{mio => }/classes/avatar.less | 0 .../classes/changelog-actions-tags.less | 0 assets/less/{mio => }/classes/changelog.less | 0 assets/less/{mio => }/classes/comment.less | 0 assets/less/{mio => }/classes/comments.less | 0 assets/less/{mio => }/classes/container.less | 0 assets/less/{mio => }/classes/flag.less | 0 assets/less/{mio => }/classes/footer.less | 0 .../less/{mio => }/classes/forum/actions.less | 0 .../less/{mio => }/classes/forum/listing.less | 0 .../{mio => }/classes/forum/pagination.less | 0 assets/less/{mio => }/classes/forum/post.less | 0 .../less/{mio => }/classes/forum/posting.less | 0 .../less/{mio => }/classes/forum/topic.less | 0 .../less/{mio => }/classes/forum/topics.less | 0 assets/less/{mio => }/classes/header.less | 0 assets/less/{mio => }/classes/index.less | 0 assets/less/classes/input/button.less | 58 ++++++ .../less/{mio => }/classes/input/select.less | 0 assets/less/classes/input/text.less | 29 +++ .../{mio => }/classes/input/textarea.less | 2 + .../less/{mio => }/classes/input/upload.less | 0 assets/less/{mio => }/classes/management.less | 0 assets/less/{mio => }/classes/navigation.less | 0 .../{mio => }/classes/news/container.less | 0 assets/less/{mio => }/classes/news/list.less | 0 assets/less/{mio => }/classes/news/post.less | 0 .../less/{mio => }/classes/news/preview.less | 0 .../less/{mio => }/classes/news/sidebar.less | 0 assets/less/{mio => }/classes/pagination.less | 0 .../less/{mio => }/classes/permissions.less | 0 .../less/{mio => }/classes/profile/about.less | 0 .../{mio => }/classes/profile/accounts.less | 0 .../{mio => }/classes/profile/header.less | 28 --- .../{mio => }/classes/profile/profile.less | 0 .../{mio => }/classes/settings/about.less | 0 .../{mio => }/classes/settings/account.less | 0 .../{mio => }/classes/settings/avatar.less | 0 .../classes/settings/description.less | 0 .../{mio => }/classes/settings/errors.less | 0 .../{mio => }/classes/settings/images.less | 0 .../less/{mio => }/classes/settings/log.less | 0 .../classes/settings/login-history.less | 0 .../classes/settings/pagination.less | 0 .../{mio => }/classes/settings/sessions.less | 0 .../{mio => }/classes/side-navigation.less | 0 assets/less/{mio => }/classes/usercard.less | 0 assets/less/{mio => }/classes/userlist.less | 0 assets/less/{mio => }/classes/warning.less | 0 assets/less/{mio => }/main.less | 4 +- assets/less/mio/classes/input/button.less | 37 ---- assets/less/mio/classes/input/text.less | 14 -- build.php | 21 +- misuzu.php | 2 +- public/auth.php | 80 ++++---- templates/auth/auth.twig | 193 +++++++++++------- templates/auth/lockdown.twig | 8 +- templates/auth/logout.twig | 14 +- templates/auth/master.twig | 1 - templates/auth/password.twig | 51 ++--- templates/master.twig | 6 +- templates/user/profile.twig | 8 +- 69 files changed, 332 insertions(+), 436 deletions(-) delete mode 100644 assets/less/auth/classes/button.less delete mode 100644 assets/less/auth/classes/container.less delete mode 100644 assets/less/auth/classes/form.less delete mode 100644 assets/less/auth/classes/logout.less delete mode 100644 assets/less/auth/classes/text.less delete mode 100644 assets/less/auth/main.less create mode 100644 assets/less/classes/auth.less rename assets/less/{mio => }/classes/avatar.less (100%) rename assets/less/{mio => }/classes/changelog-actions-tags.less (100%) rename assets/less/{mio => }/classes/changelog.less (100%) rename assets/less/{mio => }/classes/comment.less (100%) rename assets/less/{mio => }/classes/comments.less (100%) rename assets/less/{mio => }/classes/container.less (100%) rename assets/less/{mio => }/classes/flag.less (100%) rename assets/less/{mio => }/classes/footer.less (100%) rename assets/less/{mio => }/classes/forum/actions.less (100%) rename assets/less/{mio => }/classes/forum/listing.less (100%) rename assets/less/{mio => }/classes/forum/pagination.less (100%) rename assets/less/{mio => }/classes/forum/post.less (100%) rename assets/less/{mio => }/classes/forum/posting.less (100%) rename assets/less/{mio => }/classes/forum/topic.less (100%) rename assets/less/{mio => }/classes/forum/topics.less (100%) rename assets/less/{mio => }/classes/header.less (100%) rename assets/less/{mio => }/classes/index.less (100%) create mode 100644 assets/less/classes/input/button.less rename assets/less/{mio => }/classes/input/select.less (100%) create mode 100644 assets/less/classes/input/text.less rename assets/less/{mio => }/classes/input/textarea.less (78%) rename assets/less/{mio => }/classes/input/upload.less (100%) rename assets/less/{mio => }/classes/management.less (100%) rename assets/less/{mio => }/classes/navigation.less (100%) rename assets/less/{mio => }/classes/news/container.less (100%) rename assets/less/{mio => }/classes/news/list.less (100%) rename assets/less/{mio => }/classes/news/post.less (100%) rename assets/less/{mio => }/classes/news/preview.less (100%) rename assets/less/{mio => }/classes/news/sidebar.less (100%) rename assets/less/{mio => }/classes/pagination.less (100%) rename assets/less/{mio => }/classes/permissions.less (100%) rename assets/less/{mio => }/classes/profile/about.less (100%) rename assets/less/{mio => }/classes/profile/accounts.less (100%) rename assets/less/{mio => }/classes/profile/header.less (77%) rename assets/less/{mio => }/classes/profile/profile.less (100%) rename assets/less/{mio => }/classes/settings/about.less (100%) rename assets/less/{mio => }/classes/settings/account.less (100%) rename assets/less/{mio => }/classes/settings/avatar.less (100%) rename assets/less/{mio => }/classes/settings/description.less (100%) rename assets/less/{mio => }/classes/settings/errors.less (100%) rename assets/less/{mio => }/classes/settings/images.less (100%) rename assets/less/{mio => }/classes/settings/log.less (100%) rename assets/less/{mio => }/classes/settings/login-history.less (100%) rename assets/less/{mio => }/classes/settings/pagination.less (100%) rename assets/less/{mio => }/classes/settings/sessions.less (100%) rename assets/less/{mio => }/classes/side-navigation.less (100%) rename assets/less/{mio => }/classes/usercard.less (100%) rename assets/less/{mio => }/classes/userlist.less (100%) rename assets/less/{mio => }/classes/warning.less (100%) rename assets/less/{mio => }/main.less (97%) delete mode 100644 assets/less/mio/classes/input/button.less delete mode 100644 assets/less/mio/classes/input/text.less diff --git a/assets/less/auth/classes/button.less b/assets/less/auth/classes/button.less deleted file mode 100644 index 1d4878b8..00000000 --- a/assets/less/auth/classes/button.less +++ /dev/null @@ -1,14 +0,0 @@ -.button { - border-radius: 4px; - border: 0; - padding: 7px 10px; - background: #462e55; - color: #fff; - text-align: left; - cursor: pointer; - line-height: 1.4em; - display: inline-block; - text-decoration: none; - font-family: sans-serif; - font-size: 12px; -} diff --git a/assets/less/auth/classes/container.less b/assets/less/auth/classes/container.less deleted file mode 100644 index 7a49b091..00000000 --- a/assets/less/auth/classes/container.less +++ /dev/null @@ -1,16 +0,0 @@ -.auth-container { - box-shadow: 0 2px 5px fade(#111, 80%); - color: #fff; - background: #222; - margin: 2px auto; - width: 400px; - min-height: @auth-form-height; - display: flex; - flex-direction: column; - justify-content: center; - - @media (max-width: @auth-mobile) { - min-width: 0; - width: 100%; - } -} diff --git a/assets/less/auth/classes/form.less b/assets/less/auth/classes/form.less deleted file mode 100644 index 57b30325..00000000 --- a/assets/less/auth/classes/form.less +++ /dev/null @@ -1,94 +0,0 @@ -.form { - height: @auth-title-height; - overflow: hidden; - transition: height .3s ease-in-out; - - &__wrapper { - - &:not(:last-child) { - border-bottom: 1px solid #333; - } - } - - &__toggle { - display: none; - - &:checked ~ .form { - height: @auth-form-height; - } - - &:not(:checked) ~ .form .form__title:hover { - cursor: pointer; - background: #333; - z-index: 100; - box-shadow: 0 2px 5px fade(#111, 80%); - } - } - - &__title { - font-size: 1.4em; - display: block; - padding: 10px; - height: @auth-title-height; - transition: background .2s, box-shadow .2s; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - - &__content { - display: flex; - flex-direction: column; - margin: 0 5px; - height: @auth-form-height - @auth-title-height; - overflow: hidden; - transition: height .5s ease-in-out; - align-items: center; - flex-grow: 1; - justify-content: center; - - &--no-registration { - max-width: 400px; - } - } - - &__link { - color: #88c; - text-decoration: none; - - &:hover { - text-decoration: underline; - } - - &:active { - color: #c88; - } - } - - &__row { - margin-bottom: 5px; - width: 100%; - - &--columns { - display: flex; - justify-content: space-between; - align-items: center; - } - } - - &__column { - - &--message { - padding-left: 10px; - color: #aaa; - max-width: 220px; - } - - &--error { - color: #a33; - } - } -} diff --git a/assets/less/auth/classes/logout.less b/assets/less/auth/classes/logout.less deleted file mode 100644 index 84568be6..00000000 --- a/assets/less/auth/classes/logout.less +++ /dev/null @@ -1,20 +0,0 @@ -.logout { - max-width: 400px; - padding: 5px; - - &__message { - font-size: 1.2em; - } - - &__paragraph { - &:not(:last-child) { - margin-bottom: 2px; - } - } - - &__buttons { - margin-top: 5px; - display: flex; - justify-content: flex-end; - } -} diff --git a/assets/less/auth/classes/text.less b/assets/less/auth/classes/text.less deleted file mode 100644 index 9a37f002..00000000 --- a/assets/less/auth/classes/text.less +++ /dev/null @@ -1,22 +0,0 @@ -.text { - display: block; - width: 100%; - border: 0; - background: #1a1a1a; - border-radius: 4px; - color: #fff; - padding: 5px; - - @media (max-width: @auth-mobile) { - font-size: 1.2em; - } - - &__label { - display: block; - } - - &--disabled { - // same colour as placeholder (in firefox) - color: #959595; - } -} diff --git a/assets/less/auth/main.less b/assets/less/auth/main.less deleted file mode 100644 index 829b706e..00000000 --- a/assets/less/auth/main.less +++ /dev/null @@ -1,9 +0,0 @@ -@auth-mobile: 500px; -@auth-title-height: 40px; -@auth-form-height: 200px; - -@import "classes/button"; -@import "classes/container"; -@import "classes/form"; -@import "classes/logout"; -@import "classes/text"; diff --git a/assets/less/classes/auth.less b/assets/less/classes/auth.less new file mode 100644 index 00000000..3e5ad0d7 --- /dev/null +++ b/assets/less/classes/auth.less @@ -0,0 +1,37 @@ +.auth { + max-width: 400px; + margin: 0 auto; + margin-bottom: 2px; + + &__header { + display: flex; + justify-content: center; + padding: 20px; + background-image: linear-gradient(0deg, #111, var(--accent-colour)); + } + + &__warning { + margin: 2px 5px 0; + + &--welcome { + --start-colour: var(--accent-colour); + --end-colour: #222; + } + } + + &__avatar { + width: 100px; + height: 100px; + } + + &__paragraph, + &__input { + margin-bottom: 5px; + } + + &__form { + padding: 5px; + display: flex; + flex-direction: column; + } +} diff --git a/assets/less/mio/classes/avatar.less b/assets/less/classes/avatar.less similarity index 100% rename from assets/less/mio/classes/avatar.less rename to assets/less/classes/avatar.less diff --git a/assets/less/mio/classes/changelog-actions-tags.less b/assets/less/classes/changelog-actions-tags.less similarity index 100% rename from assets/less/mio/classes/changelog-actions-tags.less rename to assets/less/classes/changelog-actions-tags.less diff --git a/assets/less/mio/classes/changelog.less b/assets/less/classes/changelog.less similarity index 100% rename from assets/less/mio/classes/changelog.less rename to assets/less/classes/changelog.less diff --git a/assets/less/mio/classes/comment.less b/assets/less/classes/comment.less similarity index 100% rename from assets/less/mio/classes/comment.less rename to assets/less/classes/comment.less diff --git a/assets/less/mio/classes/comments.less b/assets/less/classes/comments.less similarity index 100% rename from assets/less/mio/classes/comments.less rename to assets/less/classes/comments.less diff --git a/assets/less/mio/classes/container.less b/assets/less/classes/container.less similarity index 100% rename from assets/less/mio/classes/container.less rename to assets/less/classes/container.less diff --git a/assets/less/mio/classes/flag.less b/assets/less/classes/flag.less similarity index 100% rename from assets/less/mio/classes/flag.less rename to assets/less/classes/flag.less diff --git a/assets/less/mio/classes/footer.less b/assets/less/classes/footer.less similarity index 100% rename from assets/less/mio/classes/footer.less rename to assets/less/classes/footer.less diff --git a/assets/less/mio/classes/forum/actions.less b/assets/less/classes/forum/actions.less similarity index 100% rename from assets/less/mio/classes/forum/actions.less rename to assets/less/classes/forum/actions.less diff --git a/assets/less/mio/classes/forum/listing.less b/assets/less/classes/forum/listing.less similarity index 100% rename from assets/less/mio/classes/forum/listing.less rename to assets/less/classes/forum/listing.less diff --git a/assets/less/mio/classes/forum/pagination.less b/assets/less/classes/forum/pagination.less similarity index 100% rename from assets/less/mio/classes/forum/pagination.less rename to assets/less/classes/forum/pagination.less diff --git a/assets/less/mio/classes/forum/post.less b/assets/less/classes/forum/post.less similarity index 100% rename from assets/less/mio/classes/forum/post.less rename to assets/less/classes/forum/post.less diff --git a/assets/less/mio/classes/forum/posting.less b/assets/less/classes/forum/posting.less similarity index 100% rename from assets/less/mio/classes/forum/posting.less rename to assets/less/classes/forum/posting.less diff --git a/assets/less/mio/classes/forum/topic.less b/assets/less/classes/forum/topic.less similarity index 100% rename from assets/less/mio/classes/forum/topic.less rename to assets/less/classes/forum/topic.less diff --git a/assets/less/mio/classes/forum/topics.less b/assets/less/classes/forum/topics.less similarity index 100% rename from assets/less/mio/classes/forum/topics.less rename to assets/less/classes/forum/topics.less diff --git a/assets/less/mio/classes/header.less b/assets/less/classes/header.less similarity index 100% rename from assets/less/mio/classes/header.less rename to assets/less/classes/header.less diff --git a/assets/less/mio/classes/index.less b/assets/less/classes/index.less similarity index 100% rename from assets/less/mio/classes/index.less rename to assets/less/classes/index.less diff --git a/assets/less/classes/input/button.less b/assets/less/classes/input/button.less new file mode 100644 index 00000000..41149d32 --- /dev/null +++ b/assets/less/classes/input/button.less @@ -0,0 +1,58 @@ +.input__button { + background-image: linear-gradient(0deg, transparent, var(--gradient-start)); + background-color: var(--accent-colour); + font-family: @mio-font-regular; + font-size: 1.1em; + line-height: 1.4em; + padding: 4px 10px; + min-width: 80px; + text-align: center; + cursor: pointer; + transition: background-color .2s, box-shadow .2s; + color: var(--text-colour-header); + border: 1px solid var(--text-colour-header); + border-radius: 2px; + display: inline-block; + text-decoration: none; + + &--disabled { + background: linear-gradient(0deg, #888, #aaa) !important; + border-color: #333; + color: #333; + box-shadow: initial !important; + } + + &:focus { + box-shadow: inset 0 0 2px 0 var(--text-colour-header); + } + + &:hover { + background-color: #a586c3; + } + + &:active { + background-color: var(--gradient-start); + } + + &--new { + color: var(--accent-colour); + background: #111; + border: 1px solid var(--accent-colour); + padding: 5px 10px; + font-size: 1.2em; + transition: color .2s, background-color .2s; + box-shadow: initial !important; + + &:hover, + &:active, + &:focus { + color: #111; + background-color: var(--accent-colour); + text-shadow: initial; + } + } + + &--destroy { + --accent-colour: #c00; + } +} diff --git a/assets/less/mio/classes/input/select.less b/assets/less/classes/input/select.less similarity index 100% rename from assets/less/mio/classes/input/select.less rename to assets/less/classes/input/select.less diff --git a/assets/less/classes/input/text.less b/assets/less/classes/input/text.less new file mode 100644 index 00000000..1832c11d --- /dev/null +++ b/assets/less/classes/input/text.less @@ -0,0 +1,29 @@ +.input__text { + border: 1px solid #aaa; + padding: 1px; + background: #fff; + color: #111; + + &:focus { + border-color: var(--accent-colour); + } + + &--readonly { + color: #666; + } + + &--monospace { + font-family: @mio-font-mono; + } + + &--new { + font-size: 1.2em; + padding: 5px 10px; + color: #fff; + border-radius: 2px; + background: #222; + box-shadow: inset 0 0 4px #111; + border-color: #222; + transition: border-color .2s; + } +} diff --git a/assets/less/mio/classes/input/textarea.less b/assets/less/classes/input/textarea.less similarity index 78% rename from assets/less/mio/classes/input/textarea.less rename to assets/less/classes/input/textarea.less index d68951b6..211cb10d 100644 --- a/assets/less/mio/classes/input/textarea.less +++ b/assets/less/classes/input/textarea.less @@ -4,6 +4,8 @@ vertical-align: bottom; background: #fff; color: #111; + font-family: @mio-font-mono; + font-size: 1em; &:focus { border-color: var(--accent-colour); diff --git a/assets/less/mio/classes/input/upload.less b/assets/less/classes/input/upload.less similarity index 100% rename from assets/less/mio/classes/input/upload.less rename to assets/less/classes/input/upload.less diff --git a/assets/less/mio/classes/management.less b/assets/less/classes/management.less similarity index 100% rename from assets/less/mio/classes/management.less rename to assets/less/classes/management.less diff --git a/assets/less/mio/classes/navigation.less b/assets/less/classes/navigation.less similarity index 100% rename from assets/less/mio/classes/navigation.less rename to assets/less/classes/navigation.less diff --git a/assets/less/mio/classes/news/container.less b/assets/less/classes/news/container.less similarity index 100% rename from assets/less/mio/classes/news/container.less rename to assets/less/classes/news/container.less diff --git a/assets/less/mio/classes/news/list.less b/assets/less/classes/news/list.less similarity index 100% rename from assets/less/mio/classes/news/list.less rename to assets/less/classes/news/list.less diff --git a/assets/less/mio/classes/news/post.less b/assets/less/classes/news/post.less similarity index 100% rename from assets/less/mio/classes/news/post.less rename to assets/less/classes/news/post.less diff --git a/assets/less/mio/classes/news/preview.less b/assets/less/classes/news/preview.less similarity index 100% rename from assets/less/mio/classes/news/preview.less rename to assets/less/classes/news/preview.less diff --git a/assets/less/mio/classes/news/sidebar.less b/assets/less/classes/news/sidebar.less similarity index 100% rename from assets/less/mio/classes/news/sidebar.less rename to assets/less/classes/news/sidebar.less diff --git a/assets/less/mio/classes/pagination.less b/assets/less/classes/pagination.less similarity index 100% rename from assets/less/mio/classes/pagination.less rename to assets/less/classes/pagination.less diff --git a/assets/less/mio/classes/permissions.less b/assets/less/classes/permissions.less similarity index 100% rename from assets/less/mio/classes/permissions.less rename to assets/less/classes/permissions.less diff --git a/assets/less/mio/classes/profile/about.less b/assets/less/classes/profile/about.less similarity index 100% rename from assets/less/mio/classes/profile/about.less rename to assets/less/classes/profile/about.less diff --git a/assets/less/mio/classes/profile/accounts.less b/assets/less/classes/profile/accounts.less similarity index 100% rename from assets/less/mio/classes/profile/accounts.less rename to assets/less/classes/profile/accounts.less diff --git a/assets/less/mio/classes/profile/header.less b/assets/less/classes/profile/header.less similarity index 77% rename from assets/less/mio/classes/profile/header.less rename to assets/less/classes/profile/header.less index 27b7a43a..34ae714d 100644 --- a/assets/less/mio/classes/profile/header.less +++ b/assets/less/classes/profile/header.less @@ -59,34 +59,6 @@ align-items: center; } - &__action { - border-radius: 2px; - color: var(--accent-colour); - background-color: #111; - text-decoration: none; - border: 1px solid var(--accent-colour); - margin-right: 10px; - padding: 5px 10px; - cursor: pointer; - font-size: 1.2em; - transition: color .2s, background-color .2s; - - &:hover { - color: #111; - background-color: var(--accent-colour); - text-shadow: initial; - } - - &--destroy { - color: #c00; - border-color: #c00; - - &:hover { - background-color: #c00; - } - } - } - &__stats { display: flex; } diff --git a/assets/less/mio/classes/profile/profile.less b/assets/less/classes/profile/profile.less similarity index 100% rename from assets/less/mio/classes/profile/profile.less rename to assets/less/classes/profile/profile.less diff --git a/assets/less/mio/classes/settings/about.less b/assets/less/classes/settings/about.less similarity index 100% rename from assets/less/mio/classes/settings/about.less rename to assets/less/classes/settings/about.less diff --git a/assets/less/mio/classes/settings/account.less b/assets/less/classes/settings/account.less similarity index 100% rename from assets/less/mio/classes/settings/account.less rename to assets/less/classes/settings/account.less diff --git a/assets/less/mio/classes/settings/avatar.less b/assets/less/classes/settings/avatar.less similarity index 100% rename from assets/less/mio/classes/settings/avatar.less rename to assets/less/classes/settings/avatar.less diff --git a/assets/less/mio/classes/settings/description.less b/assets/less/classes/settings/description.less similarity index 100% rename from assets/less/mio/classes/settings/description.less rename to assets/less/classes/settings/description.less diff --git a/assets/less/mio/classes/settings/errors.less b/assets/less/classes/settings/errors.less similarity index 100% rename from assets/less/mio/classes/settings/errors.less rename to assets/less/classes/settings/errors.less diff --git a/assets/less/mio/classes/settings/images.less b/assets/less/classes/settings/images.less similarity index 100% rename from assets/less/mio/classes/settings/images.less rename to assets/less/classes/settings/images.less diff --git a/assets/less/mio/classes/settings/log.less b/assets/less/classes/settings/log.less similarity index 100% rename from assets/less/mio/classes/settings/log.less rename to assets/less/classes/settings/log.less diff --git a/assets/less/mio/classes/settings/login-history.less b/assets/less/classes/settings/login-history.less similarity index 100% rename from assets/less/mio/classes/settings/login-history.less rename to assets/less/classes/settings/login-history.less diff --git a/assets/less/mio/classes/settings/pagination.less b/assets/less/classes/settings/pagination.less similarity index 100% rename from assets/less/mio/classes/settings/pagination.less rename to assets/less/classes/settings/pagination.less diff --git a/assets/less/mio/classes/settings/sessions.less b/assets/less/classes/settings/sessions.less similarity index 100% rename from assets/less/mio/classes/settings/sessions.less rename to assets/less/classes/settings/sessions.less diff --git a/assets/less/mio/classes/side-navigation.less b/assets/less/classes/side-navigation.less similarity index 100% rename from assets/less/mio/classes/side-navigation.less rename to assets/less/classes/side-navigation.less diff --git a/assets/less/mio/classes/usercard.less b/assets/less/classes/usercard.less similarity index 100% rename from assets/less/mio/classes/usercard.less rename to assets/less/classes/usercard.less diff --git a/assets/less/mio/classes/userlist.less b/assets/less/classes/userlist.less similarity index 100% rename from assets/less/mio/classes/userlist.less rename to assets/less/classes/userlist.less diff --git a/assets/less/mio/classes/warning.less b/assets/less/classes/warning.less similarity index 100% rename from assets/less/mio/classes/warning.less rename to assets/less/classes/warning.less diff --git a/assets/less/mio/main.less b/assets/less/main.less similarity index 97% rename from assets/less/mio/main.less rename to assets/less/main.less index 5576c689..d34ca79f 100644 --- a/assets/less/mio/main.less +++ b/assets/less/main.less @@ -1,5 +1,6 @@ @mio-font-heading: Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; @mio-font-regular: Tahoma, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif; +@mio-font-mono: Consolas, 'Liberation Mono', Menlo, Courier, monospace; @site-max-width: 1200px; @site-mobile-width: 800px; @@ -69,13 +70,14 @@ body { @import "classes/pagination"; @import "classes/management"; @import "classes/side-navigation"; +@import "classes/warning"; // Specific styles @import "classes/footer"; @import "classes/header"; @import "classes/index"; @import "classes/permissions"; -@import "classes/warning"; +@import "classes/auth"; // Profile @import "classes/profile/profile"; diff --git a/assets/less/mio/classes/input/button.less b/assets/less/mio/classes/input/button.less deleted file mode 100644 index cced271b..00000000 --- a/assets/less/mio/classes/input/button.less +++ /dev/null @@ -1,37 +0,0 @@ -.input__button { - background-image: linear-gradient(0deg, transparent, var(--gradient-start)); - background-color: var(--accent-colour); - font-family: @mio-font-regular; - font-size: 1.1em; - line-height: 1.4em; - padding: 4px 10px; - min-width: 80px; - text-align: center; - cursor: pointer; - transition: background-color .2s, box-shadow .2s; - color: var(--text-colour-header); - border: 1px solid var(--text-colour-header); - border-radius: 2px; - display: inline-block; - text-decoration: none; - - &--disabled { - background-image: linear-gradient(0deg, #888, #aaa); - border-color: #333; - color: #333; - } - - &:not(&--disabled) { - &:focus { - box-shadow: inset 0 0 2px 0 var(--text-colour-header); - } - - &:hover { - background-color: #a586c3; - } - - &:active { - background-color: var(--gradient-start); - } - } -} diff --git a/assets/less/mio/classes/input/text.less b/assets/less/mio/classes/input/text.less deleted file mode 100644 index 4f1232d2..00000000 --- a/assets/less/mio/classes/input/text.less +++ /dev/null @@ -1,14 +0,0 @@ -.input__text { - border: 1px solid #aaa; - padding: 1px; - background: #fff; - color: #111; - - &:focus { - border-color: var(--accent-colour); - } - - &--readonly { - color: #666; - } -} diff --git a/build.php b/build.php index 14e5766b..beea105c 100644 --- a/build.php +++ b/build.php @@ -36,7 +36,7 @@ define('PUBLIC_DIR', __DIR__ . '/public'); define('CSS_DIR', PUBLIC_DIR . '/css'); define('JS_DIR', PUBLIC_DIR . '/js'); -define('LESS_DEST', CSS_DIR . '/%s.css'); +define('LESS_DEST', CSS_DIR . '/style.css'); define('TS_DEST', JS_DIR . '/%s.js'); define('DTS_DEST', TS_DIR . '/%s.d.ts'); @@ -94,21 +94,10 @@ deleteAllFilesInDir(TS_DIR, '*.d.ts'); misuzu_log(); misuzu_log('Compiling LESS'); -$styles = globDir(LESS_DIR, '*', GLOB_ONLYDIR); - -foreach ($styles as $style) { - $basename = basename($style); - $destination = sprintf(LESS_DEST, $basename); - $entryPoint = $style . LESS_ENTRY_POINT; - misuzu_log("=> {$basename}"); - - if (!file_exists($entryPoint)) { - misuzu_log('==> ERR: Entry point for this style does not exist (' . basename(LESS_ENTRY_POINT) . ')'); - continue; - } - - $compileCmd = sprintf(LESS_CMD, escapeshellarg($entryPoint), escapeshellarg($destination)); - system($compileCmd); +if (!is_file(LESS_DIR . LESS_ENTRY_POINT)) { + misuzu_log('==> ERR: Entry point for this style does not exist (' . basename(LESS_ENTRY_POINT) . ')'); +} else { + system(sprintf(LESS_CMD, escapeshellarg(LESS_DIR . LESS_ENTRY_POINT), LESS_DEST)); } // figure this out diff --git a/misuzu.php b/misuzu.php index c8a6ed7e..97b9a6c4 100644 --- a/misuzu.php +++ b/misuzu.php @@ -268,7 +268,7 @@ MIG; if ($app->underLockdown()) { http_response_code(503); - echo tpl_render('auth/lockdown'); + echo tpl_render('auth.lockdown'); exit; } diff --git a/public/auth.php b/public/auth.php index 7962646f..39d4858e 100644 --- a/public/auth.php +++ b/public/auth.php @@ -15,17 +15,27 @@ $usernameValidationErrors = [ 'in-use' => 'This username is already taken!', ]; -$authMode = $_GET['m'] ?? 'login'; $preventRegistration = $app->disableRegistration(); +$isSubmission = !empty($_POST['auth']) && is_array($_POST['auth']); +$authMode = $isSubmission ? ($_POST['auth']['mode'] ?? '') : ($_GET['m'] ?? 'login'); +$authUsername = $isSubmission ? ($_POST['auth']['username'] ?? '') : ($_GET['username'] ?? ''); +$authEmail = $isSubmission ? ($_POST['auth']['email'] ?? '') : ($_GET['email'] ?? ''); +$authPassword = $_POST['auth']['password'] ?? ''; +$authVerification = $_POST['auth']['verification'] ?? ''; + tpl_vars([ 'prevent_registration' => $preventRegistration, 'auth_mode' => $authMode, - 'auth_username' => $_REQUEST['username'] ?? '', - 'auth_email' => $_REQUEST['email'] ?? '', + 'auth_username' => $authUsername, + 'auth_email' => $authEmail, ]); switch ($authMode) { + case 'get_user': + echo user_id_from_username($_GET['u'] ?? ''); + break; + case 'logout': if (!$app->hasActiveSession()) { header('Location: /'); @@ -63,9 +73,9 @@ switch ($authMode) { break; } - tpl_var('auth_reset_message', 'A verification code should\'ve been sent to your e-mail address.'); + tpl_var('auth_reset_message', "A verification code should've been sent to your e-mail address."); - while ($_SERVER['REQUEST_METHOD'] === 'POST') { + while ($isSubmission) { $validateRequest = Database::prepare(' SELECT COUNT(`user_id`) > 0 FROM `msz_users_password_resets` @@ -75,7 +85,7 @@ switch ($authMode) { AND `reset_requested` > NOW() - INTERVAL 1 HOUR '); $validateRequest->bindValue('user', $resetUser['user_id']); - $validateRequest->bindValue('code', $_POST['verification'] ?? ''); + $validateRequest->bindValue('code', $authVerification); $validateRequest = $validateRequest->execute() ? (bool)$validateRequest->fetchColumn() : false; @@ -85,16 +95,16 @@ switch ($authMode) { break; } - tpl_var('reset_verify', $_POST['verification']); + tpl_var('reset_verify', $authVerification); - if (empty($_POST['password']['new']) - || empty($_POST['password']['confirm']) - || $_POST['password']['new'] !== $_POST['password']['confirm']) { + if (empty($authPassword['new']) + || empty($authPassword['confirm']) + || $authPassword['new'] !== $authPassword['confirm']) { tpl_var('auth_reset_error', 'Your passwords didn\'t match!'); break; } - if (user_validate_password($_POST['password']['new']) !== '') { + if (user_validate_password($authPassword['new']) !== '') { tpl_var('auth_reset_error', 'Your password is too weak!'); break; } @@ -105,7 +115,7 @@ switch ($authMode) { WHERE `user_id` = :user '); $updatePassword->bindValue('user', $resetUser['user_id']); - $updatePassword->bindValue('password', user_password_hash($_POST['password']['new'])); + $updatePassword->bindValue('password', user_password_hash($authPassword['new'])); if ($updatePassword->execute()) { audit_log('PASSWORD_RESET', $resetUser['user_id']); @@ -120,13 +130,13 @@ switch ($authMode) { AND `user_id` = :user '); $invalidateCode->bindValue('user', $resetUser['user_id']); - $invalidateCode->bindValue('code', $_POST['verification']); + $invalidateCode->bindValue('code', $authVerification); if (!$invalidateCode->execute()) { throw new UnexpectedValueException('Verification code invalidation failed.'); } - header('Location: /auth.php?m=login'); + header('Location: /auth.php?m=login&u=' . $resetUser['username']); break; } @@ -141,8 +151,8 @@ switch ($authMode) { break; } - while ($_SERVER['REQUEST_METHOD'] === 'POST') { - if (empty($_POST['email'])) { + while ($isSubmission) { + if (empty($authEmail)) { tpl_var('auth_forgot_error', 'Please enter an e-mail address.'); break; } @@ -152,10 +162,11 @@ switch ($authMode) { FROM `msz_users` WHERE LOWER(`email`) = LOWER(:email) '); - $forgotUser->bindValue('email', $_POST['email']); + $forgotUser->bindValue('email', $authEmail); $forgotUser = $forgotUser->execute() ? $forgotUser->fetch(PDO::FETCH_ASSOC) : []; if (empty($forgotUser)) { + tpl_var('auth_forgot_error', 'This user is not registered with us.'); break; } @@ -208,7 +219,7 @@ MSG; Application::mailer()->send($message); } - header("Location: ?m=reset&u={$forgotUser['user_id']}"); + header("Location: ?m=reset&username={$forgotUser['user_id']}"); break; } @@ -224,10 +235,10 @@ MSG; $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? ''; $authLoginError = ''; - while ($_SERVER['REQUEST_METHOD'] === 'POST') { + while ($isSubmission) { $ipAddress = IPAddress::remote()->getString(); - if (!isset($_POST['username'], $_POST['password'])) { + if (!isset($authUsername, $authPassword)) { $authLoginError = "You didn't fill all the forms!"; break; } @@ -239,17 +250,14 @@ MSG; break; } - $username = $_POST['username'] ?? ''; - $password = $_POST['password'] ?? ''; - $getUser = Database::prepare(' SELECT `user_id`, `password` FROM `msz_users` WHERE LOWER(`email`) = LOWER(:email) OR LOWER(`username`) = LOWER(:username) '); - $getUser->bindValue('email', $username); - $getUser->bindValue('username', $username); + $getUser->bindValue('email', $authUsername); + $getUser->bindValue('username', $authUsername); $userData = $getUser->execute() ? $getUser->fetch() : []; $userId = (int)($userData['user_id'] ?? 0); @@ -265,7 +273,7 @@ MSG; break; } - if (!password_verify($password, $userData['password'])) { + if (!password_verify($authPassword, $userData['password'])) { user_login_attempt_record(false, $userId, $ipAddress, $userAgent); $authLoginError = $loginFailedError; break; @@ -302,28 +310,24 @@ MSG; $authRegistrationError = ''; - while ($_SERVER['REQUEST_METHOD'] === 'POST') { + while ($isSubmission) { if ($preventRegistration) { $authRegistrationError = 'Registration is not allowed on this instance.'; break; } - if (!isset($_POST['username'], $_POST['password'], $_POST['email'])) { + if (!isset($authUsername, $authPassword, $authEmail)) { $authRegistrationError = "You didn't fill all the forms!"; break; } - $username = $_POST['username'] ?? ''; - $password = $_POST['password'] ?? ''; - $email = $_POST['email'] ?? ''; - - $usernameValidation = user_validate_username($username, true); + $usernameValidation = user_validate_username($authUsername, true); if ($usernameValidation !== '') { $authRegistrationError = $usernameValidationErrors[$usernameValidation]; break; } - $emailValidation = user_validate_email($email, true); + $emailValidation = user_validate_email($authEmail, true); if ($emailValidation !== '') { $authRegistrationError = $emailValidation === 'in-use' ? 'This e-mail address has already been used!' @@ -331,15 +335,15 @@ MSG; break; } - if (user_validate_password($password) !== '') { + if (user_validate_password($authPassword) !== '') { $authRegistrationError = 'Your password is too weak!'; break; } $createUser = user_create( - $username, - $password, - $email, + $authUsername, + $authPassword, + $authEmail, IPAddress::remote()->getString() ); diff --git a/templates/auth/auth.twig b/templates/auth/auth.twig index c569ac21..0ef7b09b 100644 --- a/templates/auth/auth.twig +++ b/templates/auth/auth.twig @@ -1,87 +1,126 @@ {% extends 'auth/master.twig' %} {% block content %} -
-
- - +
+
-
- -
- - {% if prevent_registration|default(false) %} -
-

You're currently using the site via the public testing website, if you want to create an account please do so from the main website.

-
- {% else %} -
- - - - - - -
-
- {{ auth_register_message|default(auth_register_error|default('')) }} -
-
- -
-
-
- {% endif %} + {% if auth_register_message is defined %} +
+
+ {{ auth_register_message }} +
-
- -
- -
- -
- - -
-
- {{ auth_forgot_message|default(auth_forgot_error|default('')) }} -
-
- -
-
-
+ {% elseif auth_login_error is defined %} +
+
+ {{ auth_login_error }} +
+ {% endif %} + +
+ + + + +
-
+ + +
+ +
Register
+ + {% if auth_register_error is defined %} +
+
+ {{ auth_register_error }} +
+
+ {% endif %} + +
+ + + + + + + +
+
+ +
+ +
Forgot password
+ + {% if auth_forgot_error is defined %} +
+
+ {{ auth_forgot_error }} +
+
+ {% endif %} + +
+ + + +
+
+ + {% endblock %} diff --git a/templates/auth/lockdown.twig b/templates/auth/lockdown.twig index e7c28fb6..932c4bb3 100644 --- a/templates/auth/lockdown.twig +++ b/templates/auth/lockdown.twig @@ -1,9 +1,11 @@ {% extends 'auth/master.twig' %} {% block content %} -
-
-

The site is currently unavailable, try again later.

+
+
Unavailable
+ +
+ The site is currently unavailable, try again later.
{% endblock %} diff --git a/templates/auth/logout.twig b/templates/auth/logout.twig index 48e7834b..da37a8b0 100644 --- a/templates/auth/logout.twig +++ b/templates/auth/logout.twig @@ -1,13 +1,13 @@ {% extends 'auth/master.twig' %} {% block content %} -
-
-

We couldn't verify that you were actually the person attempting to log out.

-

Press the button below to verify the logout request, otherwise click back in your browser or close this tab.

-
-
- Logout +
+
Logout confirmation
+ +
+

We couldn't verify that you were actually the person attempting to log out.

+

Press the button below to verify the logout request, otherwise click back in your browser or close this tab.

+ Logout
{% endblock %} diff --git a/templates/auth/master.twig b/templates/auth/master.twig index d8d11713..fc530f21 100644 --- a/templates/auth/master.twig +++ b/templates/auth/master.twig @@ -1,2 +1 @@ {% extends 'master.twig' %} -{% set is_auth = true %} diff --git a/templates/auth/password.twig b/templates/auth/password.twig index 9e3887f1..22406496 100644 --- a/templates/auth/password.twig +++ b/templates/auth/password.twig @@ -1,37 +1,30 @@ {% extends 'auth/master.twig' %} {% block content %} -
-
- -
- -
- + + + +
Resetting password for {{ reset_user.username }}
- - - - - - -
-
- {{ auth_reset_error|default(auth_reset_message|default('')) }} -
- -
- -
-
-
+
+
+ {{ auth_reset_error|default(auth_reset_message|default('')) }}
+ +
+ + + + + + + +
{% endblock %} diff --git a/templates/master.twig b/templates/master.twig index 102dd411..34913cf3 100644 --- a/templates/master.twig +++ b/templates/master.twig @@ -4,13 +4,9 @@ {% include '_layout/meta.twig' %} - + - {% if is_auth|default(false) %} - - {% endif %} {% if manage_menu is defined %} -