Exemplo n.º 1
0
        public async Task <IActionResult> Register(InputModels.RegisterInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await AccountRepository.Register(input);

                return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback));
            }

            return(await FailureCallback());

            async Task <IActionResult> FailureCallback()
            {
                await AccountRepository.SignOut();

                var viewModel = new ViewModels.Account.RegisterPage {
                    BirthdayDays    = DayPickList(),
                    BirthdayDay     = input.BirthdayDay.ToString(),
                    BirthdayMonths  = MonthPickList(),
                    BirthdayMonth   = input.BirthdayMonth.ToString(),
                    BirthdayYears   = YearPickList(),
                    BirthdayYear    = input.BirthdayYear.ToString(),
                    DisplayName     = input.DisplayName,
                    Email           = input.Email,
                    ConfirmEmail    = input.ConfirmEmail,
                    Password        = input.Password,
                    ConfirmPassword = input.ConfirmPassword,
                };

                return(ForumViewResult.ViewResult(this, viewModel));
            }
        }
Exemplo n.º 2
0
        public async Task <ServiceModels.ServiceResponse> Register(InputModels.RegisterInput input)
        {
            var serviceResponse = new ServiceModels.ServiceResponse();

            var birthday = new DateTime(input.BirthdayYear, input.BirthdayMonth, input.BirthdayDay);

            var user = new DataModels.ApplicationUser {
                DisplayName = input.DisplayName,
                Registered  = DateTime.Now,
                LastOnline  = DateTime.Now,
                UserName    = input.Email,
                Email       = input.Email,
                Birthday    = birthday
            };

            var identityResult = await UserManager.CreateAsync(user, input.Password);

            if (identityResult.Succeeded)
            {
                Log.LogInformation($"User created a new account with password '{input.Email}'.");

                var code = await UserManager.GenerateEmailConfirmationTokenAsync(user);

                var callbackUrl = EmailConfirmationLink(user.Id, code);

                if (!EmailSender.Ready)
                {
                    serviceResponse.RedirectPath = callbackUrl;
                    return(serviceResponse);
                }

                await EmailSender.SendEmailConfirmationAsync(input.Email, callbackUrl);
            }
            else
            {
                foreach (var error in identityResult.Errors)
                {
                    Log.LogError($"Error registering '{input.Email}'. Message: {error.Description}");
                    serviceResponse.Error(error.Description);
                }
            }

            return(serviceResponse);
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Register(InputModels.RegisterInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await AccountRepository.Register(input);

                return(await this.RedirectFromService(serviceResponse, FailureCallback));
            }

            return(await FailureCallback());

            async Task <IActionResult> FailureCallback()
            {
                await AccountRepository.SignOut();

                var viewModel = new ViewModels.Account.RegisterPage {
                    DisplayName = input.DisplayName,
                    Email       = input.Email,
                    Password    = input.Password,
                };

                return(View(viewModel));
            }
        }
Exemplo n.º 4
0
        public async Task <ServiceModels.ServiceResponse> Register(InputModels.RegisterInput input)
        {
            var serviceResponse = new ServiceModels.ServiceResponse();

            if (!input.ConfirmThirteen)
            {
                var message = $"You must be 13 or older to register.";
                serviceResponse.Error(nameof(input.ConfirmThirteen), message);
                Log.LogWarning(message);
            }

            if ((await Records()).Any(r => r.DisplayName == input.DisplayName))
            {
                var message = $"The display name '{input.DisplayName}' is already taken.";
                serviceResponse.Error(nameof(input.DisplayName), message);
                Log.LogWarning(message);
            }

            if (serviceResponse.Success)
            {
                var user = new DataModels.ApplicationUser {
                    DisplayName = input.DisplayName,
                    Registered  = DateTime.Now,
                    Birthday    = DateTime.Now,
                    LastOnline  = DateTime.Now,
                    UserName    = input.Email,
                    Email       = input.Email
                };

                var identityResult = await UserManager.CreateAsync(user, input.Password);

                if (identityResult.Succeeded)
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = EmailConfirmationLink(user.Id, code);

                    if (EmailSender.Ready)
                    {
                        await EmailSender.SendEmailConfirmationAsync(input.Email, callbackUrl);
                    }

                    var loginInput = new InputModels.LoginInput {
                        Email    = input.Email,
                        Password = input.Password
                    };

                    return(await Login(loginInput));
                }
                else
                {
                    foreach (var error in identityResult.Errors)
                    {
                        Log.LogError($"Error registering '{input.Email}'. Message: {error.Description}");
                        serviceResponse.Error(error.Description);
                    }
                }
            }

            return(serviceResponse);
        }