--- /dev/null
+define([
+ 'jquery',
+ 'bootstrap-validator',
+ 'js/util',
+ 'js/logger'
+], function (
+ $,
+ BootstrapValidator,
+ Util,
+ Logger
+) {
+ 'use strict';
+
+ var logger = Logger('login.js');
+
+ /**
+ * listener of input change in login
+ */
+ function _loginFormHandler() {
+ $('#tic-page-login-form-email').on('input change', function(e) {
+ if ($(e.target).hasClass('has-danger') === false) {
+ $('#tic-page-form-help-email').html('');
+ }
+ });
+ $('#tic-page-login-form-password').on('input change', function(e) {
+ if ($(e.target).hasClass('has-danger') === false) {
+ $('#tic-page-form-help-password').html('');
+ }
+ });
+ }
+
+ /**
+ * listener of submit in login
+ */
+ function _loginHandler() {
+ $('#tic-page-login-form').validator().on('submit', function (e) {
+ // prevent for sumbit of form
+ e.preventDefault();
+
+ Util.POST('api/session', {
+ email : $('#tic-page-login-form-email').val(),
+ password: $('#tic-page-login-form-password').val()
+ })
+ .then(function (user) {
+ if (user.result === 'success') {
+ logger.info('login success');
+ $('#tic-page-login-dropdown-toggle').dropdown('toggle');
+ // toggle for login and logout
+ $('#tic-navbar-login').toggleClass('hidden', true); // hidden
+ $('#tic-navbar-logout').toggleClass('hidden', false); // visible
+ $('#tic-page-logout-dropdown-toggle').html(user.data.user_email +'<span class="caret">');
+
+ updatePermission();
+ } else {
+ if (user.reason === 'email') {
+ logger.info('invalid email');
+ $('#tic-page-form-group-email').addClass('has-error has-danger');
+ $('#tic-page-form-help-email').html('Invalid email.');
+ } else if (user.reason === 'password') {
+ logger.info('invalid password');
+ $('#tic-page-form-group-password').addClass('has-error has-danger');
+ $('#tic-page-form-help-password').html('Invalid password.');
+ }
+ }
+ });
+ });
+ }
+
+ /**
+ * listener of submit in logout
+ */
+ function _logoutHandler() {
+ $('#tic-page-logout-form').on('submit', function (e) {
+ // prevent for sumbit of form
+ e.preventDefault();
+
+ Util.DELETE('api/session')
+ .then(function (result) {
+ if (result.result === 'success') {
+ logger.info('logout success');
+ $('#tic-page-logout-dropdown-toggle').dropdown('toggle');
+ // toggle for logout and login
+ $('#tic-navbar-login').toggleClass('hidden', false); // visible
+ $('#tic-navbar-logout').toggleClass('hidden', true); // hidden
+ $('#tic-page-logout-dropdown-toggle').html('');
+ }
+ updatePermission();
+ });
+ });
+ }
+
+ /**
+ * Permission control in login
+ */
+ function _updateLogin(user) {
+ if (user.group !== 'GUEST') {
+ $('#tic-navbar-login').toggleClass('hidden', true); // hidden
+ $('#tic-navbar-logout').toggleClass('hidden', false); // visible
+ $('#tic-page-logout-dropdown-toggle').html(user.email +'<span class="caret">');
+ }
+ }
+
+ /**
+ * Permission control in packages page
+ */
+ function _updatePackagePage(group) {
+ // Image Creation Button
+ if (group === 'GUEST') {
+ $('#tic-package-create').toggleClass('hidden', true);
+ } else {
+ $('#tic-package-create').toggleClass('hidden', false);
+ }
+ }
+
+ /**
+ * Permission control of group
+ */
+ function updatePermission() {
+ Util.GET('api/session')
+ .then(function (user) {
+ _updateLogin(user);
+ _updatePackagePage(user.group);
+ });
+ }
+
+ function init() {
+ logger.info('init');
+
+ _loginFormHandler();
+ _loginHandler();
+ _logoutHandler();
+
+ updatePermission();
+ }
+
+ init();
+
+ return {
+ /**
+ * Update control state by permission
+ * @method updatePermission
+ */
+ updatePermission: updatePermission
+ }
+
+});
Util.getAppConfig().then(function (data) {
AppConfig = data;
});
-
- // login: listener of input change
- $('#tic-page-login-form-email').on('input change', function(e) {
- if ($(e.target).hasClass('has-danger') === false) {
- $('#tic-page-form-help-email').html('');
- }
- });
- $('#tic-page-login-form-password').on('input change', function(e) {
- if ($(e.target).hasClass('has-danger') === false) {
- $('#tic-page-form-help-password').html('');
- }
- });
- // login: listener of submit
- $('#tic-page-login-form').validator().on('submit', function (e) {
- // prevent for sumbit of form
- e.preventDefault();
-
- Util.POST('api/session', {
- email : $('#tic-page-login-form-email').val(),
- password: $('#tic-page-login-form-password').val()
- })
- .then(function (user) {
- if (user.result === 'success') {
- logger.info('login success');
- $('#tic-page-login-dropdown-toggle').dropdown('toggle');
- // toggle for login and logout
- $('#tic-navbar-login').toggleClass('hidden', true); // hidden
- $('#tic-navbar-logout').toggleClass('hidden', false); // visible
- $('#tic-page-logout-dropdown-toggle').html(user.data.user_email +'<span class="caret">');
-
- updatePermission();
- } else {
- if (user.reason === 'email') {
- logger.info('invalid email');
- $('#tic-page-form-group-email').addClass('has-error has-danger');
- $('#tic-page-form-help-email').html('Invalid email.');
- } else if (user.reason === 'password') {
- logger.info('invalid password');
- $('#tic-page-form-group-password').addClass('has-error has-danger');
- $('#tic-page-form-help-password').html('Invalid password.');
- }
- }
- });
- });
-
- // logout: listener of submit
- $('#tic-page-logout-form').on('submit', function (e) {
- // prevent for sumbit of form
- e.preventDefault();
-
- Util.DELETE('api/session')
- .then(function (result) {
- if (result.result === 'success') {
- logger.info('logout success');
- $('#tic-page-logout-dropdown-toggle').dropdown('toggle');
- // toggle for logout and login
- $('#tic-navbar-login').toggleClass('hidden', false); // visible
- $('#tic-navbar-logout').toggleClass('hidden', true); // hidden
- $('#tic-page-logout-dropdown-toggle').html('');
- }
- updatePermission();
- });
- });
-
- function initSession() {
- Util.GET('api/session')
- .then(function (user) {
- if (user.group !== 'GUEST') {
- $('#tic-navbar-login').toggleClass('hidden', true); // hidden
- $('#tic-navbar-logout').toggleClass('hidden', false); // visible
- $('#tic-page-logout-dropdown-toggle').html(user.email +'<span class="caret">');
- }
- updatePermission();
- });
- }
-
- initSession();
- }
-
- function updatePermission() {
- // TODO: add permission control of group
- Util.GET('api/session')
- .then(function (user) {
- if (user.group === 'ADMIN') {
- $('#tic-package-create').toggleClass('hidden', false);
- } else if (user.group === 'MASTER') {
- $('#tic-package-create').toggleClass('hidden', false);
- } else { // 'GUEST'
- $('#tic-package-create').toggleClass('hidden', true);
- }
- });
}
init();