From efc9e66f4ddff7c0aaae5d460ab41f6026fbd32d Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Wed, 13 Nov 2013 16:02:48 +0100 Subject: [PATCH] webui: login screen widget Reimplementation of unauthorized dialog into separate widget. It uses RCUE design. New features compared to unauthorized dialog: - reflects auth methods from `auth` module - validation summary - differentiates Kerberos auth failure with session expiration - Caps Lock warning - form based method doesn't allow password only submission https://fedorahosted.org/freeipa/ticket/4017 https://fedorahosted.org/freeipa/ticket/3903 Reviewed-By: Adam Misnyovszki --- freeipa.spec.in | 1 + install/ui/images/Makefile.am | 3 + install/ui/images/login-screen-background.jpg | Bin 0 -> 69168 bytes install/ui/images/login-screen-logo.png | Bin 0 -> 5802 bytes install/ui/images/product-name.png | Bin 0 -> 13622 bytes install/ui/less/login.less | 167 ++++++ install/ui/less/rcue.less | 1 + install/ui/src/freeipa/dialog.js | 4 +- install/ui/src/freeipa/widgets/LoginScreen.js | 549 ++++++++++++++++++ 9 files changed, 723 insertions(+), 2 deletions(-) create mode 100644 install/ui/images/login-screen-background.jpg create mode 100644 install/ui/images/login-screen-logo.png create mode 100644 install/ui/images/product-name.png create mode 100644 install/ui/less/login.less create mode 100644 install/ui/src/freeipa/widgets/LoginScreen.js diff --git a/freeipa.spec.in b/freeipa.spec.in index 8ae5e2e08..52817cd4d 100644 --- a/freeipa.spec.in +++ b/freeipa.spec.in @@ -707,6 +707,7 @@ fi %{_usr}/share/ipa/ui/js/freeipa/app.js %dir %{_usr}/share/ipa/ui/js/plugins %dir %{_usr}/share/ipa/ui/images +%{_usr}/share/ipa/ui/images/*.jpg %{_usr}/share/ipa/ui/images/*.png %{_usr}/share/ipa/ui/images/*.gif %dir %{_usr}/share/ipa/wsgi diff --git a/install/ui/images/Makefile.am b/install/ui/images/Makefile.am index 0a92fdf9a..e63af6912 100644 --- a/install/ui/images/Makefile.am +++ b/install/ui/images/Makefile.am @@ -17,12 +17,15 @@ app_DATA = \ ie-icon.png \ ipa-banner.png \ ipa-logo.png \ + login-screen-background.jpg \ + login-screen-logo.png \ mainnav-tab-off.png \ mainnav-tab-on.png \ modal-background.png \ nav-arrow.png \ outer-background.png \ panel-background.png \ + product-name.png \ remove-icon.png \ reset-icon.png \ search-background.png \ diff --git a/install/ui/images/login-screen-background.jpg b/install/ui/images/login-screen-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2ffc1ac5e6a4dad0be7ef9cb13bf5ae2665a04f GIT binary patch literal 69168 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 literal 0 HcmV?d00001 diff --git a/install/ui/images/login-screen-logo.png b/install/ui/images/login-screen-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..38f948efd770171ed922a80521e7fa576d8a172f GIT binary patch literal 5802 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 literal 0 HcmV?d00001 diff --git a/install/ui/images/product-name.png b/install/ui/images/product-name.png new file mode 100644 index 0000000000000000000000000000000000000000..79551f3acc6f0ae67aac1e3e0d8c8c3325fd0f90 GIT binary patch literal 13622 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 a2!J`6=9?&duj$`RCTVd6u^JJB!2bgs5>*TU literal 0 HcmV?d00001 diff --git a/install/ui/less/login.less b/install/ui/less/login.less new file mode 100644 index 000000000..de9d651b0 --- /dev/null +++ b/install/ui/less/login.less @@ -0,0 +1,167 @@ +/** + * Authors: + * UXD team + * Petr Vobornik + * + * Copyright (C) 2013 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +.facet[name=login] { + height: 100%; +} + +.rcue-login-screen { + width: 100%; + + height: 100%; + background-color: #1D2226; + background-image: url("../images/login-screen-background.jpg"); + background-position: top left; + background-size: auto; + background-repeat: no-repeat; + + img.logo { + // position: absolute; + // top: 50px; + // right: 64px; + display: none; + } + + .login-form { + position: absolute; + bottom: 15%; + left: 0; + right: 0; + border-top: 1px rgba(255, 255, 255, 0.05) solid; + border-bottom: 1px rgba(255, 255, 255, 0.05) solid; + background-color: rgba(0, 0, 0, 0.3); + color: #fff; + + aside { + padding: 30px; + p { + margin-bottom: 8px; + } + } + + fieldset { + float: left; + margin: 30px 30px 30px 0; + padding: 10px; + padding-right: 34px; + width: 426px; + border-right: 1px rgba(255, 255, 255, 0.15) solid; + + legend { + position: absolute; + top: -100px; + padding-left: 100px; + width: auto; + text-transform: uppercase; + letter-spacing: 0.5px; + font-weight: 200; + font-size: 22px; + border-bottom: none; + + strong { + margin-right: 4px; + font-weight: 700; + } + } + + input[type="text"], + input[type="password"] { + width: 282px; + color: black; + } + + .buttons { + float: right; + } + + label, button { + font-size: 13px; + } + + small { + line-height: 22px; + margin-left: 87px; + margin-top: 10px; + display: block; + float: left; + } + } + } +} + +@media (min-width: 1280px) { + .rcue-login-screen { + background-size: 100% auto; + } +} + + +.login_small() { + .rcue-login-screen .login-form { + top: 100px; + bottom: inherit; + } +} + +@media (max-width: 480px) { + + .login_small; + + .rcue-login-screen .login-form { + fieldset { + float: none; + width: auto; + .buttons { + float: none; + } + } + aside { + padding: 10px; + } + } +} + +@media (max-height: 700px) { + .login_small; +} + +@media (max-height: 480px) { + .login_small; + .rcue-login-screen .login-form legend { + position: relative; + } +} + +@media (max-width: 740px) { + .rcue-login-screen .login-form { + fieldset { + border-right: none; + legend { + padding-left: 0; + width: 100%; + } + } + aside { + clear: both; + } + } +} diff --git a/install/ui/less/rcue.less b/install/ui/less/rcue.less index 60e41d95f..2d41aa283 100644 --- a/install/ui/less/rcue.less +++ b/install/ui/less/rcue.less @@ -11,3 +11,4 @@ @import "forms-override"; @import "widgets"; @import "plugins/otp"; +@import "login.less"; diff --git a/install/ui/src/freeipa/dialog.js b/install/ui/src/freeipa/dialog.js index 39c48efd3..4c6c37f88 100644 --- a/install/ui/src/freeipa/dialog.js +++ b/install/ui/src/freeipa/dialog.js @@ -1291,7 +1291,7 @@ IPA.confirm_mixin = function() { var self = this; this._on_key_up_listener = function(e) { self.on_key_up(e); }; this._on_key_down_listener = function(e) { self._on_key_down(e); }; - var dialog_container = this.dom_node; + var dialog_container = $(this.dom_node); dialog_container.bind('keyup', this._on_key_up_listener); dialog_container.bind('keydown', this._on_key_down_listener); }, @@ -1300,7 +1300,7 @@ IPA.confirm_mixin = function() { * Removal of registered event handlers */ remove_listeners: function() { - var dialog_container = this.dom_node; + var dialog_container = $(this.dom_node); dialog_container.unbind('keyup', this._on_key_up_listener); dialog_container.unbind('keydown', this._on_key_down_listener); }, diff --git a/install/ui/src/freeipa/widgets/LoginScreen.js b/install/ui/src/freeipa/widgets/LoginScreen.js new file mode 100644 index 000000000..9d149af4c --- /dev/null +++ b/install/ui/src/freeipa/widgets/LoginScreen.js @@ -0,0 +1,549 @@ +/* Authors: + * Petr Vobornik + * + * Copyright (C) 2013 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +define(['dojo/_base/declare', + 'dojo/_base/lang', + 'dojo/dom-construct', + 'dojo/dom-style', + 'dojo/query', + 'dojo/on', + 'dojo/Evented', + 'dojo/Stateful', + '../ipa', + '../auth', + '../reg', + '../FieldBinder', + '../FormMixin', + '../text', + '../util', + './ContainerMixin' + ], + function(declare, lang, construct, dom_style, query, on, + Evented, Stateful, IPA, auth, reg, FieldBinder, FormMixin, text, + util, ContainerMixin) { + + var ConfirmMixin = declare(null, IPA.confirm_mixin().mixin); + + /** + * Widget with login form. + * + * Supported operations: + * + * - login with password, kerberos + * - password change + * + * @class widgets.LoginScreen + */ + var LoginScreen = declare([Stateful, Evented, FormMixin, ContainerMixin, ConfirmMixin], { + + id: 'rcue-login-screen', + + 'class': 'rcue-login-screen', + + logo_src: 'images/login-screen-logo.png', + + product_name_src: 'images/product-name.png', + + expired_msg: "Your session has expired. Please re-login.", + + form_auth_msg: "To login with username and password, enter them in the fields below, then click Login.", + + kerberos_msg: " To login with Kerberos, please make sure you" + + " have valid tickets (obtainable via kinit) and " + + "configured" + + " the browser correctly, then click Login. ", + + form_auth_failed: "The password or username you entered is incorrect. ", + + krb_auth_failed: "Authentication with Kerberos failed", + + password_expired: "Your password has expired. Please enter a new password.", + + denied: "Sorry you are not allowed to access this service.", + + caps_warning_msg: "Warning: CAPS LOCK key is on", + + /** + * Details builder + * @property {IPA.details_builder} + * @protected + */ + details_builder: null, + + /** + * Aside text + * @property {string} + */ + aside: "", + + //nodes: + dom_node: null, + container_node: null, + content_node: null, + aside_node: null, + login_btn_node: null, + reset_btn_node: null, + buttons_node: null, + + /** + * View this form is in. + * + * Possible views: ['login', 'reset'] + * @property {string} + */ + view: 'login', + + /** + * Indicates that CAPS LOCK warning is on. Null indicates that we don't + * know the state. + * @property {boolean|null} + */ + caps_warning: null, + + + _asideSetter: function(text) { + this.aside = text; + if (this.aside_node) { + this.aside_node.innerHTML = this.aside; + } + }, + + _viewSetter: function(view) { + this.view = view; + this.refresh(); + }, + + render: function() { + + this.dom_node = construct.create('div', { + id: this.id, + 'class': this['class'] + }); + + if (this.container_node) { + construct.place(this.dom_node, this.container_node); + } + + this.render_content(); + this.register_listeners(); + + return this.dom_node; + }, + + render_content: function() { + + construct.empty(this.dom_node); + + construct.create('img', { + 'class': 'logo', + src: this.logo_src + }, this.dom_node); + + this.render_form(this.dom_node); + }, + + render_form: function(container) { + + var form_cont = construct.create('div', { + 'class': 'login-form' + }, container); + + var fieldset = construct.create('fieldset', {}, form_cont); + + var legend = construct.create('legend', {}, fieldset); + construct.create('img', { + src: this.product_name_src + }, legend); + + var layout = IPA.fluid_layout({}); + var form = layout.create(this.get_widgets()); + construct.place(form[0], fieldset); + this.register_caps_check(); + + this.buttons_node = construct.create('div', { + 'class': 'buttons' + }, fieldset); + + this.login_btn_node = IPA.button({ + label: text.get('@i18n:login.login', "Login"), + 'class': 'btn-primary', + click: lang.hitch(this, this.on_confirm) + })[0]; + construct.place(this.login_btn_node, this.buttons_node); + + this.reset_btn_node = IPA.button({ + label: text.get('@i18n:buttons.reset_password_and_login', "Reset Password and Login"), + 'class': 'btn-primary', + click: lang.hitch(this, this.on_confirm) + })[0]; + + this.render_aside(form_cont); + }, + + render_aside: function(container) { + + this.aside_node = construct.create('aside', { + innerHTML: this.aside + }, container); + }, + + create_fields: function() { + + var validation_summary = { + $type: 'validation_summary', + name: 'validation', + visible: false + }; + + var val_w = this.add_widget(validation_summary); + var fields = LoginScreen.field_specs; + for (var i=0, l=fields.length; i-1; + f.set_enabled(enable); + w.set_visible(enable); + } + }, + + set_login_aside_text: function() { + var aside = ""; + if (auth.current.expired) { + aside += "

"+this.expired_msg;+"

"; + } + if (this.password_enabled()) { + aside += "

"+this.form_auth_msg;+"

"; + } + if (this.kerberos_enabled()) { + aside += "

"+this.kerberos_msg;+"

"; + } + this.set('aside', aside); + }, + + set_reset_aside_text: function() { + this.set('aside', ''); + }, + + kerberos_enabled: function() { + return auth.current.auth_methods.indexOf('kerberos') > -1; + }, + + password_enabled: function() { + return auth.current.auth_methods.indexOf('password') > -1; + }, + + postscript: function(args) { + this.create_fields(); + }, + + constructor: function(spec) { + spec = spec || {}; + declare.safeMixin(this, spec); + + this.expired_msg = text.get(spec.expired_msg || '@i18n:ajax.401.message', + this.expired_msg); + + this.form_auth_msg = text.get(spec.form_auth_msg || '@i18n:login.form_auth', + this.form_auth_msg); + + this.kerberos_msg = text.get(spec.kerberos_msg || '@i18n:login.krb_auth_msg', + this.kerberos_msg); + + this.kerberos_msg = this.kerberos_msg.replace('${host}', window.location.hostname); + + this.krb_auth_failed = text.get(spec.krb_auth_failed, this.krb_auth_failed); + } + }); + + LoginScreen.field_specs = [ + { + $type: 'text', + name: 'username', + label: text.get('@i18n:login.username', "Username"), + show_errors: false, + undo: false + }, + { + $type: 'password', + name: 'password', + label: text.get('@i18n:login.password', "Password"), + show_errors: false, + undo: false + }, + { + name: 'username_r', + read_only: true, + label: text.get('@i18n:login.username', "Username"), + show_errors: false, + undo: false + }, + { + name: 'new_password', + $type: 'password', + required: true, + label: text.get('@i18n:password.new_password)', "New Password"), + show_errors: false, + undo: false + }, + { + name: 'verify_password', + $type: 'password', + required: true, + label: text.get('@i18n:password.verify_password', "Verify Password"), + validators: [{ + $type: 'same_password', + other_field: 'new_password' + }], + show_errors: false, + undo: false + } + ]; + + return LoginScreen; +}); \ No newline at end of file