Exemplo n.º 1
0
        public async Task <ActionResult> ConfirmEmail(string userId, string code)
        {
            if (userId == null || code == null)
            {
                return(View("Error"));
            }

            var user = await _usersRepository.Get(userId);

            var roleExists = await _rolesRepository.RoleExists(RoleConstants.SuperAdminRole);

            if (!roleExists)
            {
                var roleResult = await _rolesRepository.CreateAdministrationRoles();

                if (!roleResult.Succeeded)
                {
                    AddErrors(new IdentityResult("Admin roles could not be created"));
                    throw (new Exception(ViewResource.ConfirmEmailError));
                }

                var addToRoleResult = await _usersRepository.AddToRoles(user, RoleConstants.SuperAdminRole);

                if (!addToRoleResult.Succeeded)
                {
                    AddErrors(new IdentityResult("User could not be added to Admin role"));
                    throw (new Exception(ViewResource.ConfirmEmailError));
                }
            }

            var userAuthorized = await UserManager.AuthorizeAdminUser(user.Id);

            if (!userAuthorized)
            {
                throw (new Exception(ViewResource.ErrorAccessDenied));
            }

            var result = await UserManager.ConfirmEmailAsync(userId, code);

            if (result.Succeeded)
            {
                return(View("ConfirmEmail"));
            }
            else
            {
                throw (new Exception(ViewResource.ConfirmEmailError));
            }
        }