Exemplo n.º 1
0
        public async Task <bool> AcceptSchool(School school)
        {
            if (school == null)
            {
                return(false);
            }

            school.Accept();

            await rolesService.AdmitRole(school.Owner, RoleName.SchoolOwner);

            await notificationSystem.PushNotification(school.OwnerId, StaticExpressions.SchoolAccepted(school.Name), NotificationType.School);

            return(true);
        }
Exemplo n.º 2
0
        public async Task <User> Register(string email, string username, string password)
        {
            var user = User.Create(email, username);

            if (await EmailExists(email))
            {
                Alertify.Push("Email address already exists", AlertType.Error);
                return(null);
            }

            if (await UsernameExists(username))
            {
                Alertify.Push("Username already exists", AlertType.Error);
                return(null);
            }

            if ((await userManager.CreateAsync(user, password)).Succeeded)
            {
                await rolesService.AdmitRole(RoleName.User, user);

                var confirmAccountToken = await userManager.GenerateEmailConfirmationTokenAsync(user);

                confirmAccountToken = cryptoService.Encrypt(confirmAccountToken);

                string callbackUrl =
                    $"{Configuration.GetValue<string>(AppSettingsKeys.ServerAddress)}/Auth/ConfirmAccount?email={user.Email}&token={confirmAccountToken}";

                await emailSender.Send(EmailMessages.ActivationAccountEmail(email, callbackUrl));

                return(user);
            }

            Alertify.Push("Creating account failed", AlertType.Error);
            return(null);
        }
Exemplo n.º 3
0
        public async Task <AuthResult> SignUp(string email, string password, string username)
        {
            string saltedPasswordHash = string.Empty;
            var    passwordSalt       = hashGenerator.CreateSalt();

            hashGenerator.GenerateHash(password, passwordSalt, out saltedPasswordHash);

            var user = new UserBuilder()
                       .SetEmail(email)
                       .SetUsername(username)
                       .SetPassword(saltedPasswordHash, passwordSalt)
                       .Build();

            database.UserRepository.Add(user);

            if (await database.Complete())
            {
                var registerToken = Token.Create(TokenType.Register);

                user.Tokens.Add(registerToken);

                if (await rolesService.AdmitRole(RoleName.User, user))
                {
                    return(await database.Complete() ? new AuthResult(registerToken.Code, user) : null);
                }

                return(null);
            }

            return(null);
        }
Exemplo n.º 4
0
        public async Task <bool> AdmitRole(string userId, RoleName role)
        {
            var currentAdmin = await GetCurrentAdmin(userId);

            var user = await GetUserToManage(userId);

            return(await rolesService.AdmitRole(role, user) ? await database.Complete() : false);
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Register(UserForRegisterDto userForRegisterDto)
        {
            var userForRegister = mapper.Map <User>(userForRegisterDto);

            if (await authService.Register(userForRegister, userForRegisterDto.Password))
            {
                await rolesService.AdmitRole(userForRegister, RoleName.User);

                var callbackUrl = await authService.GenerateEmailConfirmationCallbackUrl(userForRegister);

                if (await emailSender.SendEmail(StaticExpressions.ConfirmationEmail(userForRegister.Email, userForRegister.UserName, callbackUrl)))
                {
                    var user = mapper.Map <UserAuthDto>(userForRegister);

                    return(Accepted(user));
                }

                return(StatusCode(503, "Wystąpił błąd podczas wysyłania maila aktywacyjnego. Spróbuj wysłać maila ponownie"));
            }

            throw new AuthorizationException("Wystąpił problem podczas rejestracji");
        }