New login screen UI

This commit is contained in:
Joseph Schorr 2016-04-06 15:57:40 -04:00
parent 2d4337ef82
commit f97b8e2304
24 changed files with 394 additions and 212 deletions

View file

@ -274,7 +274,13 @@ quayApp.run(['$location', '$rootScope', 'Restangular', 'UserService', 'PlanServi
if (!current.$$route) { return; }
$rootScope.pageClass = current.$$route.pageClass || '';
var pageClass = current.$$route.pageClass || '';
if (typeof pageClass != 'string') {
pageClass = pageClass(Features);
}
$rootScope.pageClass = pageClass;
$rootScope.newLayout = !!current.$$route.newLayout;
$rootScope.fixFooter = !!current.$$route.fixFooter;

View file

@ -160,15 +160,7 @@ angular.module('quay').directive('headerBar', function () {
};
$scope.getEnterpriseLogo = function() {
if (!Config.ENTERPRISE_LOGO_URL) {
if (Features.BILLING) {
return '/static/img/quay-horizontal-whiteblue-nobackground.svg';
} else {
return '/static/img/QuayEnterprise_horizontal_color.svg'
}
}
return Config.ENTERPRISE_LOGO_URL;
return Config.getEnterpriseLogo(false);
};
$scope.toggleSearch = function() {

View file

@ -0,0 +1,35 @@
/**
* An element which displays a box for the user to recover their account.
*/
angular.module('quay').directive('recoveryForm', function () {
var directiveDefinitionObject = {
priority: 0,
templateUrl: '/static/directives/recovery-form.html',
replace: false,
transclude: true,
restrict: 'C',
scope: {
},
controller: function($scope, $location, $timeout, ApiService, KeyService, UserService, Config, Features) {
$scope.Config = Config;
$scope.Features = Features;
$scope.sendRecovery = function() {
$scope.sendingRecovery = true;
ApiService.requestRecoveryEmail($scope.recovery).then(function(resp) {
$scope.invalidRecovery = false;
$scope.errorMessage = '';
$scope.sent = resp;
$scope.sendingRecovery = false;
}, function(resp) {
$scope.invalidRecovery = true;
$scope.errorMessage = ApiService.getErrorMessage(resp, 'Cannot send recovery email');
$scope.sent = null;
$scope.sendingRecovery = false;
});
};
}
};
return directiveDefinitionObject;
});

View file

@ -18,8 +18,7 @@ angular.module('quay').directive('signupForm', function () {
$scope.awaitingConfirmation = false;
$scope.registering = false;
$scope.EXTERNAL_LOGINS = ExternalLoginService.EXTERNAL_LOGINS;
$scope.singleSigninUrl = ExternalLoginService.getSingleSigninUrl();
$scope.Config = Config;
$scope.register = function() {
UIService.hidePopover('#signupButton');

View file

@ -10,9 +10,10 @@ angular.module('quay').directive('userSetup', function () {
restrict: 'C',
scope: {
'redirectUrl': '=redirectUrl',
'inviteCode': '=inviteCode',
'hideLogo': '@hideLogo',
'signInStarted': '&signInStarted',
'signedIn': '&signedIn',
'userRegistered': '&userRegistered'
@ -20,30 +21,23 @@ angular.module('quay').directive('userSetup', function () {
controller: function($scope, $location, $timeout, ApiService, KeyService, UserService, Config, Features) {
$scope.Config = Config;
$scope.Features = Features;
$scope.currentView = 'createAccount';
$scope.sendRecovery = function() {
$scope.sendingRecovery = true;
var hasSignedIn = function() {
return UserService.hasEverLoggedIn() || Config.AUTHENTICATION_TYPE != 'Database';
};
ApiService.requestRecoveryEmail($scope.recovery).then(function(resp) {
$scope.invalidRecovery = false;
$scope.errorMessage = '';
$scope.sent = resp;
$scope.sendingRecovery = false;
}, function(resp) {
$scope.invalidRecovery = true;
$scope.errorMessage = ApiService.getErrorMessage(resp, 'Cannot send recovery email');
$scope.sent = null;
$scope.sendingRecovery = false;
});
if (hasSignedIn()) {
$scope.currentView = 'signin';
}
$scope.setView = function(view) {
$scope.currentView = view;
};
$scope.handleUserRegistered = function(username) {
$scope.userRegistered({'username': username});
};
$scope.hasSignedIn = function() {
return UserService.hasEverLoggedIn() || Config.AUTHENTICATION_TYPE != 'Database';
};
}
};
return directiveDefinitionObject;

View file

@ -4,7 +4,9 @@
*/
angular.module('quayPages').config(['pages', function(pages) {
pages.create('landing', 'landing.html', LandingCtrl, {
'pageClass': 'landing-page'
'pageClass': function(Features) {
return Features.BILLING ? 'landing-page' : '';
}
});
}]);
@ -20,7 +22,6 @@
UserService.updateUserIn($scope, function(user) {
if (!user.anonymous) {
$location.path('/repository');
return;
}
});
@ -81,13 +82,5 @@
}
});
};
$scope.getEnterpriseLogo = function() {
if (!Config.ENTERPRISE_LOGO_URL) {
return '/static/img/QuayEnterprise_horizontal_color.svg';
}
return Config.ENTERPRISE_LOGO_URL;
};
}
})();

View file

@ -4,7 +4,7 @@
*/
angular.module('quayPages').config(['pages', function(pages) {
pages.create('signin', 'signin.html', SignInCtrl, {
'title': 'Sign In'
'title': 'Sign In',
});
}]);

View file

@ -35,7 +35,7 @@ angular.module('quay').factory('Features', [function() {
/**
* Application configuration.
*/
angular.module('quay').factory('Config', [function() {
angular.module('quay').factory('Config', ['Features', function(Features) {
if (!window.__config) {
return {};
}
@ -71,5 +71,21 @@ angular.module('quay').factory('Config', [function() {
return value;
};
config.getEnterpriseLogo = function(forWhiteBackground) {
if (!config.ENTERPRISE_LOGO_URL) {
if (Features.BILLING) {
if (forWhiteBackground) {
return '/static/img/quay-horizontal-color.svg';
} else {
return '/static/img/quay-horizontal-whiteblue-nobackground.svg';
}
} else {
return '/static/img/QuayEnterprise_horizontal_color.svg';
}
}
return config.ENTERPRISE_LOGO_URL;
};
return config;
}]);