diff --git a/bower.json b/bower.json
index 67d81ba..3f825f0 100644
--- a/bower.json
+++ b/bower.json
@@ -56,7 +56,8 @@
"ng-js-tree": "~0.0.7",
"angular-ui-select": "^0.19.6",
"angular-upload": "^1.0.12",
- "ng-tags-input": "^3.2.0"
+ "ng-tags-input": "^3.2.0",
+ "lodash": "^4.17.4"
},
"resolutions": {
"angular": "~1.5.9",
diff --git a/src/app/pages/.DS_Store b/src/app/pages/.DS_Store
index f0fab09..38d4309 100644
Binary files a/src/app/pages/.DS_Store and b/src/app/pages/.DS_Store differ
diff --git a/src/app/pages/authSignIn/auth.service.js b/src/app/pages/authSignIn/auth.service.js
new file mode 100644
index 0000000..b4a9d65
--- /dev/null
+++ b/src/app/pages/authSignIn/auth.service.js
@@ -0,0 +1,39 @@
+/**
+ * @author ayoub
+ */
+(function () {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.authSignIn')
+ .factory('AuthService',AuthService);
+
+ /** @ngInject */
+ function AuthService($http, $q) {
+ var apiBaseUrl = "http://localhost:9000"
+ var endpoint = apiBaseUrl + "/auth";
+
+ function login(params) {
+ params = params || {};
+
+ var access_token = { "access_token" : params.access_token }
+ var auth = { headers : { 'Authorization': 'Basic ' + btoa(params.email + ":" + params.password)}}
+
+ var deferred = $q.defer();
+ $http.post(endpoint, access_token, auth)
+ .success(function(data) {
+ deferred.resolve(data);
+ }).error(function(msg, code) {
+ deferred.reject(msg);
+ });
+
+ return deferred.promise;
+
+
+ return $http.post(endpoint, access_token, auth)
+ }
+
+ return {
+ login:login
+ }
+ }
+})();
diff --git a/src/app/pages/authSignIn/authSignIn.html b/src/app/pages/authSignIn/authSignIn.html
new file mode 100644
index 0000000..3993ebc
--- /dev/null
+++ b/src/app/pages/authSignIn/authSignIn.html
@@ -0,0 +1,35 @@
+
diff --git a/src/app/pages/authSignIn/authSignIn.module.js b/src/app/pages/authSignIn/authSignIn.module.js
new file mode 100644
index 0000000..b783ea7
--- /dev/null
+++ b/src/app/pages/authSignIn/authSignIn.module.js
@@ -0,0 +1,22 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.authSignIn', [])
+ .config(routeConfig);
+
+ /** @ngInject */
+ function routeConfig($stateProvider) {
+ $stateProvider
+ .state('authSignIn', {
+ url: '/authSignIn',
+ templateUrl: 'app/pages/authSignIn/authSignIn.html',
+ title: 'My Page',
+ controller: 'authSignInCtrl',
+ sidebarMeta: {
+ order: 800,
+ },
+ authenticate: false
+ });
+ }
+
+})();
diff --git a/src/app/pages/authSignIn/authSignInCtrl.js b/src/app/pages/authSignIn/authSignInCtrl.js
new file mode 100644
index 0000000..884eb96
--- /dev/null
+++ b/src/app/pages/authSignIn/authSignInCtrl.js
@@ -0,0 +1,49 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.authSignIn')
+ .controller('authSignInCtrl', authSignInCtrl);
+
+ /** @ngInject */
+ function authSignInCtrl($scope, localStorage, $state, AuthService) {
+ var vm = this;
+
+
+ vm.login = login;
+
+ init();
+
+ function init() {
+ localStorage.clear();
+ vm.error = ""
+ }
+
+ function login() {
+ var userObject = {
+ email: vm.email,
+ password: vm.password
+ };
+ AuthService
+ .login(userObject)
+ .then(
+ function (data){
+ if (data.token && data.user) {
+
+ localStorage.setObject('user', data.user);
+ localStorage.setObject('token', data.token);
+ $state.go('main.dashboard');
+ }
+ console.log("AuthService loggedin",data)
+ },
+ function (error){
+ vm.error = "There were an error logging you in"
+ console.log("Error", error);
+ }
+ );
+
+ }
+
+
+ }
+
+})();
diff --git a/src/app/pages/authSignUp/authSignUp.html b/src/app/pages/authSignUp/authSignUp.html
new file mode 100644
index 0000000..42cfdfc
--- /dev/null
+++ b/src/app/pages/authSignUp/authSignUp.html
@@ -0,0 +1,49 @@
+
diff --git a/src/app/pages/authSignUp/authSignUp.module.js b/src/app/pages/authSignUp/authSignUp.module.js
new file mode 100644
index 0000000..059221d
--- /dev/null
+++ b/src/app/pages/authSignUp/authSignUp.module.js
@@ -0,0 +1,22 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.authSignUp', [])
+ .config(routeConfig);
+
+ /** @ngInject */
+ function routeConfig($stateProvider) {
+ $stateProvider
+ .state('authSignUp', {
+ url: '/authSignUp',
+ templateUrl: 'app/pages/authSignUp/authSignUp.html',
+ title: 'My Page',
+ controller: 'authSignUpCtrl',
+ sidebarMeta: {
+ order: 800,
+ },
+ authenticate: false
+ });
+ }
+
+})();
diff --git a/src/app/pages/authSignUp/authSignUpCtrl.js b/src/app/pages/authSignUp/authSignUpCtrl.js
new file mode 100644
index 0000000..fcbd6b3
--- /dev/null
+++ b/src/app/pages/authSignUp/authSignUpCtrl.js
@@ -0,0 +1,13 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.authSignUp')
+ .controller('authSignUpCtrl', authSignUpCtrl);
+
+ /** @ngInject */
+ function authSignUpCtrl($scope) {
+ var vm = this;
+
+ }
+
+})();
diff --git a/src/app/pages/config/config.module.js b/src/app/pages/config/config.module.js
new file mode 100644
index 0000000..428e54a
--- /dev/null
+++ b/src/app/pages/config/config.module.js
@@ -0,0 +1,13 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.config', [])
+ .config(routeConfig);
+
+ /** @ngInject */
+ function routeConfig() {
+
+ }
+
+
+})();
diff --git a/src/app/pages/config/routeChange.js b/src/app/pages/config/routeChange.js
new file mode 100644
index 0000000..78d1acf
--- /dev/null
+++ b/src/app/pages/config/routeChange.js
@@ -0,0 +1,20 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.config')
+ .run(stateChangeStart);
+
+ /** @ngInject */
+ function stateChangeStart($rootScope, $state, localStorage) {
+ $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams) {
+ var login = localStorage.getObject('user');
+ var token = localStorage.getObject('token');
+ if (toState.authenticate && (_.isEmpty(login) || _.isEmpty(token)) ) {
+ // User isn’t authenticated
+ $state.transitionTo("authSignIn");
+ event.preventDefault();
+ }
+ });
+ }
+
+})();
diff --git a/src/app/pages/dashboard/.DS_Store b/src/app/pages/dashboard/.DS_Store
new file mode 100644
index 0000000..035cf63
Binary files /dev/null and b/src/app/pages/dashboard/.DS_Store differ
diff --git a/src/app/pages/dashboard/dashboard.html b/src/app/pages/dashboard/dashboard.html
new file mode 100644
index 0000000..4ff029a
--- /dev/null
+++ b/src/app/pages/dashboard/dashboard.html
@@ -0,0 +1 @@
+Dash
\ No newline at end of file
diff --git a/src/app/pages/dashboard/dashboard.module.js b/src/app/pages/dashboard/dashboard.module.js
new file mode 100644
index 0000000..775bcfe
--- /dev/null
+++ b/src/app/pages/dashboard/dashboard.module.js
@@ -0,0 +1,26 @@
+/**
+ * @author v.lugovsky
+ * created on 16.12.2015
+ */
+(function () {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.dashboard', [])
+ .config(routeConfig);
+
+ /** @ngInject */
+ function routeConfig($stateProvider) {
+ $stateProvider
+ .state('main.dashboard', {
+ url: '/dashboard',
+ templateUrl: 'app/pages/dashboard/dashboard.html',
+ title: 'Dashboard',
+ sidebarMeta: {
+ icon: 'ion-android-home',
+ order: 0,
+ },
+ authenticate: true
+ });
+ }
+
+})();
diff --git a/src/app/pages/main/main.html b/src/app/pages/main/main.html
new file mode 100644
index 0000000..898142d
--- /dev/null
+++ b/src/app/pages/main/main.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/main/main.module.js b/src/app/pages/main/main.module.js
new file mode 100644
index 0000000..c0f69cc
--- /dev/null
+++ b/src/app/pages/main/main.module.js
@@ -0,0 +1,24 @@
+/**
+ * @author l.azevedo
+ * created on 29.07.2017
+ */
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.main', [])
+ .config(routeConfig);
+
+ /** @ngInject */
+ function routeConfig($stateProvider) {
+ $stateProvider
+ .state('main', {
+ url: '/main',
+ templateUrl: 'app/pages/main/main.html',
+ redirectTo: 'main.dashboard',
+ authenticate: true
+
+
+ });
+ }
+
+})();
diff --git a/src/app/pages/pages.module.js b/src/app/pages/pages.module.js
index 3f7364f..f8064a1 100644
--- a/src/app/pages/pages.module.js
+++ b/src/app/pages/pages.module.js
@@ -8,15 +8,24 @@
angular.module('BlurAdmin.pages', [
'ui.router',
+ 'BlurAdmin.pages.dashboard',
+ 'BlurAdmin.pages.main',
'BlurAdmin.pages.surveys',
'BlurAdmin.pages.teams',
'BlurAdmin.pages.viewer',
- ])
- .config(routeConfig);
+ 'BlurAdmin.pages.authSignIn',
+ 'BlurAdmin.pages.authSignUp',
+ 'BlurAdmin.pages.services',
+ 'BlurAdmin.pages.config',
+ //'BlurAdmin.pages.main',
+ ]).config(routeConfig)
+ .factory('authInterceptor', authInterceptor);
/** @ngInject */
- function routeConfig($urlRouterProvider, baSidebarServiceProvider) {
- $urlRouterProvider.otherwise('/dashboard');
+ function routeConfig($urlRouterProvider, baSidebarServiceProvider, $httpProvider) {
+ $urlRouterProvider.otherwise('/authSignIn');
+
+ $httpProvider.interceptors.push('authInterceptor');
baSidebarServiceProvider.addStaticItem({
title: 'Pages',
@@ -40,4 +49,44 @@
});
}
+
+ function authInterceptor($rootScope, $q, localStorage) {
+ console.log('authInterceptor')
+ return {
+ request: function (config) {
+ config.headers = config.headers || {};
+
+ if (config.data !== undefined && config.url.indexOf('auth') != -1) {
+ config.data.access_token = 'AlAoWLue33D1sBrKNHOohXdvYNh2Je9i'; //TODO : get this from the config
+ }
+ else if (localStorage.getObject('token')) {
+
+ if (config.data === undefined) {
+ //Do nothing if data is not originally supplied from the calling method
+ }
+ else {
+ config.data.access_token = localStorage.getObject('token');
+ console.log()
+ }
+
+ if (config.method === 'GET') {
+ /*if (config.params === undefined) {
+ config.params = {};
+ }
+ config.params.test = localStorage.getObject('token');*/
+ }
+ //config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
+ }
+ return config;
+ },
+ responseError: function (rejection) {
+ if (rejection.status === 401) {
+ console.log("not authorised");
+ localStorage.clear();
+ }
+ return $q.reject(rejection);
+ }
+ };
+};
+
})();
diff --git a/src/app/pages/services/localStorage.js b/src/app/pages/services/localStorage.js
new file mode 100644
index 0000000..9267f62
--- /dev/null
+++ b/src/app/pages/services/localStorage.js
@@ -0,0 +1,56 @@
+/**
+ * @author l.azevedo
+ * created on 29/06/2017
+ */
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.services')
+ .service('localStorage', localStorage);
+
+ /** @ngInject */
+ function localStorage($window) {
+ var service = {
+ set: set,
+ get: get,
+ setObject: setObject,
+ getObject: getObject,
+ clear: clear
+ }
+
+ return service;
+
+ function set(key, value) {
+ if ($window.fakeLocalStorage) {
+ $window.fakeLocalStorage[key] = value;
+ } else {
+ $window.localStorage[key] = value;
+ }
+ }
+
+ function get(key, defaultValue) {
+ return !$window.fakeLocalStorage ? $window.localStorage[key] || defaultValue : $window.fakeLocalStorage[key] || defaultValue;
+ }
+
+ function setObject(key, value) {
+ if ($window.fakeLocalStorage) {
+ $window.fakeLocalStorage[key] = angular.toJson(value);
+ } else {
+ $window.localStorage[key] = angular.toJson(value);
+ }
+ }
+
+ function getObject(key) {
+ return !$window.fakeLocalStorage ? angular.fromJson($window.localStorage[key] || '{}') : angular.fromJson($window.fakeLocalStorage[key] || '{}');
+ }
+
+ function clear() {
+ if ($window.fakeLocalStorage) {
+ $window.fakeLocalStorage = {};
+ } else {
+ $window.localStorage.clear();
+ }
+ }
+ }
+
+})();
diff --git a/src/app/pages/services/services.module.js b/src/app/pages/services/services.module.js
new file mode 100644
index 0000000..94a296d
--- /dev/null
+++ b/src/app/pages/services/services.module.js
@@ -0,0 +1,12 @@
+(function() {
+ 'use strict';
+
+ angular.module('BlurAdmin.pages.services', [])
+ .config(routeConfig);
+
+ /** @ngInject */
+ function routeConfig() {
+
+ }
+
+})();
diff --git a/src/app/pages/surveys/create/createTabCtrl.js b/src/app/pages/surveys/create/createTabCtrl.js
index 8b0c32f..c7130da 100644
--- a/src/app/pages/surveys/create/createTabCtrl.js
+++ b/src/app/pages/surveys/create/createTabCtrl.js
@@ -257,7 +257,7 @@
$scope.survey.list = $scope.lists.selected;
$scope.survey.status = "Sending";
$log.info("sendSurvey",$scope.survey);
- $state.transitionTo('surveys.list'/*, {id: item.id}*/);
+ $state.transitionTo('main.surveys.list'/*, {id: item.id}*/);
$scope.saveSurvey(true);
diff --git a/src/app/pages/surveys/list/list.controller.js b/src/app/pages/surveys/list/list.controller.js
index 1c2c369..53f04e6 100644
--- a/src/app/pages/surveys/list/list.controller.js
+++ b/src/app/pages/surveys/list/list.controller.js
@@ -23,12 +23,12 @@
function goToCreate() {
$log.info("Go to create");
- $state.go('surveys.create');
+ $state.go('main.surveys.create');
}
function editSurvey(id){
$log.info("Edit");
- $state.go('surveys.edit', {'survey_id': id})
+ $state.go('main.surveys.edit', {'survey_id': id})
};
function removeSurvey(id){
diff --git a/src/app/pages/surveys/surveys.module.js b/src/app/pages/surveys/surveys.module.js
index 2aae291..52b3af4 100644
--- a/src/app/pages/surveys/surveys.module.js
+++ b/src/app/pages/surveys/surveys.module.js
@@ -13,7 +13,7 @@
/** @ngInject */
function routeConfig($stateProvider) {
$stateProvider
- .state('surveys', {
+ .state('main.surveys', {
url: '/surveys',
template : '',
title: 'Surveys',
@@ -21,7 +21,7 @@
icon: 'ion-gear-a',
order: 1000,
},
- }).state('surveys.create', {
+ }).state('main.surveys.create', {
url: '/create',
templateUrl: 'app/pages/surveys/create/create.html',
controller: "CreateTabCtrl",
@@ -29,12 +29,12 @@
sidebarMeta: {
order: 1000,
},
- }).state('surveys.edit', {
+ }).state('main.surveys.edit', {
url: '/edit/:survey_id',
templateUrl: 'app/pages/surveys/create/create.html',
controller: "CreateTabCtrl",
title: 'Edit a survey'
- }).state('surveys.list', {
+ }).state('main.surveys.list', {
url: '/list',
templateUrl: 'app/pages/surveys/list/list.html',
controller: "list as vm",
diff --git a/src/app/pages/teams/lists/ListsTabCtrl.js b/src/app/pages/teams/lists/ListsTabCtrl.js
index a94607d..0c00b88 100644
--- a/src/app/pages/teams/lists/ListsTabCtrl.js
+++ b/src/app/pages/teams/lists/ListsTabCtrl.js
@@ -169,7 +169,7 @@
if (item && item.isChecked) {
vm.activeList = item;
vm.errors.noList = false;
- $state.transitionTo('teams.lists', {id: item.id}, {notify: false});
+ $state.transitionTo('main.teams.lists', {id: item.id}, {notify: false});
angular.forEach(vm.Lists, function(list){
if(item.id != list.id)
list.isChecked = false;
@@ -201,7 +201,7 @@
vm.activeList = {};
vm.errors.noList = true;
vm.listMembers = [];
- $state.transitionTo('teams.lists', {notify: false});
+ $state.transitionTo('main.teams.lists', {notify: false});
}
diff --git a/src/app/pages/teams/lists/lists.module.js b/src/app/pages/teams/lists/lists.module.js
index 51b1580..76f9143 100644
--- a/src/app/pages/teams/lists/lists.module.js
+++ b/src/app/pages/teams/lists/lists.module.js
@@ -11,7 +11,7 @@
/** @ngInject */
function routeConfig($stateProvider,$urlRouterProvider) {
$stateProvider
- .state('teams.lists', {
+ .state('main.teams.lists', {
url: '/lists/:id',
//abstract: true,
templateUrl: 'app/pages/teams/lists/lists.html',
diff --git a/src/app/pages/teams/members/composeBox/composeBoxCtrl.js b/src/app/pages/teams/members/composeBox/composeBoxCtrl.js
index 9c5cb76..338381e 100644
--- a/src/app/pages/teams/members/composeBox/composeBoxCtrl.js
+++ b/src/app/pages/teams/members/composeBox/composeBoxCtrl.js
@@ -50,7 +50,7 @@
.create(vm.member)
.then(function (data){
vm.member = {}
- $state.go('teams.members');
+ $state.go('main.teams.members');
toastr.info('The member was created successfuly :)', 'Members', {
"autoDismiss": true,
diff --git a/src/app/pages/teams/members/detail/memberDetail.html b/src/app/pages/teams/members/detail/memberDetail.html
index 37688c5..03727e8 100644
--- a/src/app/pages/teams/members/detail/memberDetail.html
+++ b/src/app/pages/teams/members/detail/memberDetail.html
@@ -5,7 +5,7 @@
-
diff --git a/src/app/pages/teams/members/members.html b/src/app/pages/teams/members/members.html
index 4c51d20..87402f7 100644
--- a/src/app/pages/teams/members/members.html
+++ b/src/app/pages/teams/members/members.html
@@ -15,7 +15,7 @@
+ ui-sref="main.teams.members.label({label: t.label})" ng-click="tabCtrl.selectTab(t.label)">
{{t.name}}
diff --git a/src/app/pages/teams/members/members.module.js b/src/app/pages/teams/members/members.module.js
index c1e29e6..c935965 100644
--- a/src/app/pages/teams/members/members.module.js
+++ b/src/app/pages/teams/members/members.module.js
@@ -11,7 +11,7 @@
/** @ngInject */
function routeConfig($stateProvider,$urlRouterProvider) {
$stateProvider
- .state('teams.members', {
+ .state('main.teams.members', {
url: '/members',
//abstract: true,
templateUrl: 'app/pages/teams/members/members.html',
@@ -21,13 +21,13 @@
sidebarMeta: {
order: 0,
},
- }).state('teams.members.label', {
+ }).state('main.teams.members.label', {
url: '/:label',
templateUrl: 'app/pages/teams/members/membersListing/membersList.html',
title: 'Members',
controller: "MembersListCtrl",
controllerAs: "listCtrl"
- }).state('teams.members.detail', {
+ }).state('main.teams.members.detail', {
url: '/:id',
templateUrl: 'app/pages/teams/members/detail/memberDetail.html',
title: 'Detail',
diff --git a/src/app/pages/teams/members/membersListing/membersList.html b/src/app/pages/teams/members/membersListing/membersList.html
index 5abfc46..cad563c 100644
--- a/src/app/pages/teams/members/membersListing/membersList.html
+++ b/src/app/pages/teams/members/membersListing/membersList.html
@@ -34,11 +34,11 @@
-
+ |
|
-
+ |
{{m.name}}
{{l}}
diff --git a/src/app/pages/teams/teams.module.js b/src/app/pages/teams/teams.module.js
index fa98b42..1bd3923 100644
--- a/src/app/pages/teams/teams.module.js
+++ b/src/app/pages/teams/teams.module.js
@@ -15,7 +15,7 @@
/** @ngInject */
function routeConfig($stateProvider) {
$stateProvider
- .state('teams', {
+ .state('main.teams', {
url: '/teams',
template : ' ',
abstract: true,
diff --git a/src/app/theme/components/baSidebar/baSidebar.service.js b/src/app/theme/components/baSidebar/baSidebar.service.js
index 3c19627..b3631d7 100644
--- a/src/app/theme/components/baSidebar/baSidebar.service.js
+++ b/src/app/theme/components/baSidebar/baSidebar.service.js
@@ -73,7 +73,8 @@
return {
name: s.name,
title: s.title,
- level: (s.name.match(/\./g) || []).length,
+ //level: (s.name.match(/\./g) || []).length,
+ level: ((s.name.match(/\./g) || []).length - 1),
order: meta.order,
icon: meta.icon,
stateRef: s.name,
diff --git a/src/index.html b/src/index.html
index 21ac58e..e602006 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,5 +1,6 @@
+
@@ -23,57 +24,29 @@
+
+
-
-
+
-
-
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/sass/auth.scss b/src/sass/auth.scss
index 6969ab9..8d4f138 100644
--- a/src/sass/auth.scss
+++ b/src/sass/auth.scss
@@ -3,7 +3,6 @@
@import "theme/_layout.scss";
@import 'theme/buttons.scss';
@import 'app/form.scss';
-
html {
min-height: 520px;
height: 100%;
@@ -15,14 +14,17 @@ body {
}
$text-color: #ffffff;
-
-.form-control, .form-control:focus {
+.form-control,
+.form-control:focus {
@include placeholderStyle($text-color, 0.9);
background-color: rgba(0, 0, 0, .4);
border-radius: 5px;
color: $text-color;
}
-.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
+
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
@include placeholderStyle($text-color, 0.6);
}
@@ -57,12 +59,10 @@ $text-color: #ffffff;
color: $primary-dark;
}
}
-
.control-label {
padding-top: 11px;
color: $text-color;
}
-
.form-group {
margin-bottom: 12px;
}
@@ -105,18 +105,19 @@ a.forgot-pass {
text-align: center;
display: block;
position: relative;
- & > span {
+ &>span {
display: table-cell;
width: 30%;
white-space: nowrap;
padding: 0 24px;
color: $text-color;
- & > span {
+ &>span {
margin-top: -12px;
display: block;
}
}
- &:before, &:after {
+ &:before,
+ &:after {
border-top: solid 1px $text-color;
content: "";
height: 1px;
diff --git a/src/sass/common.scss b/src/sass/common.scss
index df04ce9..552b18e 100644
--- a/src/sass/common.scss
+++ b/src/sass/common.scss
@@ -1,3 +1,4 @@
@import 'theme/conf/mixins';
@import 'theme/conf/colorScheme/mint';
@import 'theme/conf/variables';
+@import 'theme/_login.scss';
diff --git a/src/sass/theme/_login.scss b/src/sass/theme/_login.scss
new file mode 100644
index 0000000..8c1b57b
--- /dev/null
+++ b/src/sass/theme/_login.scss
@@ -0,0 +1,141 @@
+.login {
+ min-height: 520px;
+ @include main-background();
+ height: 100%;
+}
+
+$text-color: #ffffff;
+.login .form-control,
+.login .form-control:focus {
+ @include placeholderStyle($text-color, 0.9);
+ background-color: rgba(0, 0, 0, .4);
+ border-radius: 5px;
+ color: $text-color;
+}
+
+.login .form-control[disabled],
+.login .form-control[readonly],
+fieldset[disabled] .form-control {
+ @include placeholderStyle($text-color, 0.6);
+}
+
+.auth-main {
+ display: flex;
+ align-items: center;
+ height: 100%;
+ width: 100%;
+}
+
+.login .auth-block {
+ width: 540px;
+ margin: 150px auto;
+ border-radius: 5px;
+ @include bg-translucent-dark(0.55);
+ color: #fff;
+ padding: 32px;
+ h1 {
+ font-weight: $font-light;
+ margin-bottom: 28px;
+ text-align: center;
+ }
+ p {
+ font-size: 16px;
+ }
+ a {
+ text-decoration: none;
+ outline: none;
+ transition: all 0.2s ease;
+ color: $primary;
+ &:hover {
+ color: $primary-dark;
+ }
+ }
+ .control-label {
+ padding-top: 11px;
+ color: $text-color;
+ }
+ .form-group {
+ margin-bottom: 12px;
+ }
+}
+
+.login .auth-input {
+ width: 300px;
+ margin-bottom: 24px;
+ input {
+ display: block;
+ width: 100%;
+ border: none;
+ font-size: 16px;
+ padding: 4px 10px;
+ outline: none;
+ }
+}
+
+.login a.forgot-pass {
+ display: block;
+ text-align: right;
+ margin-bottom: -20px;
+ float: right;
+ z-index: 2;
+ position: relative;
+}
+
+.login .auth-link {
+ display: block;
+ font-size: 16px;
+ text-align: center;
+ margin-bottom: 33px;
+}
+
+.login .auth-sep {
+ margin-top: 36px;
+ margin-bottom: 24px;
+ line-height: 20px;
+ font-size: 16px;
+ text-align: center;
+ display: block;
+ position: relative;
+ &>span {
+ display: table-cell;
+ width: 30%;
+ white-space: nowrap;
+ padding: 0 24px;
+ color: $text-color;
+ &>span {
+ margin-top: -12px;
+ display: block;
+ }
+ }
+ &:before,
+ &:after {
+ border-top: solid 1px $text-color;
+ content: "";
+ height: 1px;
+ width: 35%;
+ display: table-cell;
+ }
+}
+
+.login .al-share-auth {
+ text-align: center;
+ .al-share {
+ float: none;
+ margin: 0;
+ padding: 0;
+ display: inline-block;
+ li {
+ margin-left: 24px;
+ &:first-child {
+ margin-left: 0;
+ }
+ i {
+ font-size: 24px;
+ }
+ }
+ }
+}
+
+.login .btn-auth {
+ color: #ffffff!important;
+}
\ No newline at end of file
|