Ejemplo n.º 1
0
        public int GetUserID()
        {
            var userId            = User.FindFirstValue(ClaimTypes.NameIdentifier);
            RungreenlakeUser user = _context.Users.Find(userId);
            var currid            = user.LinkID;

            return(currid);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new RungreenlakeUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);

                        var userId = await _userManager.GetUserIdAsync(user);

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = userId, code = code },
                            protocol: Request.Scheme);

                        await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                          $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Ejemplo n.º 3
0
        private async Task LoadAsync(RungreenlakeUser user)
        {
            var email = await _userManager.GetEmailAsync(user);

            Email = email;

            Input = new InputModel
            {
                NewEmail = email,
            };

            IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user);
        }
Ejemplo n.º 4
0
        private async Task LoadAsync(RungreenlakeUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new InputModel
            {
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                PhoneNumber = phoneNumber
            };
        }
        private async Task LoadSharedKeyAndQrCodeUriAsync(RungreenlakeUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            SharedKey = FormatKey(unformattedKey);

            var email = await _userManager.GetEmailAsync(user);

            AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey);
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> Create([Bind("FirstName,LastName")] RungreenlakeUser user)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    _context.Add(user);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }
            catch (DbUpdateException /* ex */)
            {
                //Log the error (uncomment ex variable name and write a log.
                ModelState.AddModelError("", "Cannot save new User." +
                                         "Try again, check that your entry information is correct.");
            }
            return(View(user));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            RaceTypeList = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = "One Mile", Value = "1"
                },
                new SelectListItem()
                {
                    Text = "5 Kilometers", Value = "2"
                },
                new SelectListItem()
                {
                    Text = "10 Kilometers", Value = "3"
                },
                new SelectListItem()
                {
                    Text = "Half-Marathon", Value = "4"
                },
                new SelectListItem()
                {
                    Text = "Full-Marathon", Value = "5"
                }
            };

            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();


            if (ModelState.IsValid)
            {
                //Calculate total and mile time.
                int totalTime = Input.RaceTimeHours * 3600 + Input.RaceTimeMinutes * 60 + Input.RaceTimeSeconds;
                var mileTime  = Functions.GetMileTime(totalTime, Input.RaceType);

                //Check if 1 mile time is absurd.
                if (mileTime > 223)
                {
                    var user = new RungreenlakeUser
                    {
                        UserName       = Input.Email,
                        Email          = Input.Email,
                        FirstName      = Input.Firstname,
                        LastName       = Input.Lastname,
                        EmailConfirmed = true
                    };

                    //bundle registration transaction
                    using (var registrationTransaction = _context.Database.BeginTransaction())
                    {
                        try
                        {
                            //Create user profile, which will generate a "Link ID"
                            var result = await _userManager.CreateAsync(user, Input.Password);

                            if (result.Succeeded)
                            {
                                //Create profile entry.
                                var profile = new rungreenlake.Models.Profile
                                {
                                    ProfileID    = user.LinkID,
                                    CreationDate = DateTime.Now,
                                    LinkID       = user.LinkID
                                };

                                //Create initial time entry.
                                var race = new RaceRecord
                                {
                                    RaceType  = Input.RaceType,
                                    RaceTime  = totalTime,
                                    ProfileID = user.LinkID,
                                    MileTime  = mileTime
                                };
                                _context.Database.ExecuteSqlRaw("SET IDENTITY_INSERT dbo.Profiles ON");
                                _context.Add(profile);
                                _context.SaveChanges();
                                _context.Database.ExecuteSqlRaw("SET IDENTITY_INSERT dbo.Profiles OFF");
                                _context.Add(race);
                                _context.SaveChanges();
                                registrationTransaction.Commit();
                                await _signInManager.SignInAsync(user, isPersistent : false);

                                return(LocalRedirect(returnUrl));
                                //return RedirectToAction("Success", "Home");
                            }
                            else
                            {
                                foreach (var error in result.Errors)
                                {
                                    ModelState.AddModelError("", error.Description);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            registrationTransaction.Rollback();
                            ModelState.AddModelError("", "Unable to register, please contact your administrator for more details.");
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Wow, you must be fast!  Unfortnately your mile time must be greater than 3:43!");
                }

                /*
                 * if (result.Succeeded)
                 * {
                 *  _logger.LogInformation("User created a new account with password.");
                 *
                 *  var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                 *  code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                 *  var callbackUrl = Url.Page(
                 *      "/Account/ConfirmEmail",
                 *      pageHandler: null,
                 *      values: new { area = "Identity", userId = user.Id, code = code },
                 *      protocol: Request.Scheme);
                 *
                 *  await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                 *      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");
                 *
                 *  if (_userManager.Options.SignIn.RequireConfirmedAccount)
                 *  {
                 *      return RedirectToPage("RegisterConfirmation", new { email = Input.Email });
                 *  }
                 *  else
                 *  {
                 *      await _signInManager.SignInAsync(user, isPersistent: false);
                 *      return LocalRedirect(returnUrl);
                 *  }
                 * }
                 * foreach (var error in result.Errors)
                 * {
                 *  ModelState.AddModelError(string.Empty, error.Description);
                 * }
                 */
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }