/** * An element which displays the sign up form. */ angular.module('quay').directive('signupForm', function () { var directiveDefinitionObject = { priority: 0, templateUrl: '/static/directives/signup-form.html', replace: false, transclude: true, restrict: 'C', scope: { 'inviteCode': '=inviteCode', 'hideRegisteredMessage': '@hideRegisteredMessage', 'userRegistered': '&userRegistered' }, controller: function($scope, $location, $timeout, ApiService, KeyService, UserService, Config, UIService, ExternalLoginService) { $('.form-signup').popover(); $scope.awaitingConfirmation = false; $scope.registering = false; $scope.EXTERNAL_LOGINS = ExternalLoginService.EXTERNAL_LOGINS; $scope.singleSigninUrl = ExternalLoginService.getSingleSigninUrl(); $scope.register = function() { UIService.hidePopover('#signupButton'); $scope.registering = true; if ($scope.inviteCode) { $scope.newUser['invite_code'] = $scope.inviteCode; } ApiService.createNewUser($scope.newUser).then(function(resp) { $scope.registering = false; $scope.awaitingConfirmation = !!resp['awaiting_verification']; if (Config.MIXPANEL_KEY) { mixpanel.alias($scope.newUser.username); } $scope.userRegistered({'username': $scope.newUser.username}); if (!$scope.awaitingConfirmation && !$scope.inviteCode) { document.location = '/'; } UserService.load(); }, function(result) { $scope.registering = false; UIService.showFormError('#signupButton', result); }); }; } }; return directiveDefinitionObject; });