public async Task <IActionResult> UpdateHouseMate([FromBody] UpdateHouseMateBindingModel model)
        {
            //This method is currently used to update HouseId when a housemate joins a House
            if (ModelState.IsValid)
            {
                try
                {
                    HouseMate houseMate = GetCurrentHouseMate();

                    if (houseMate.HouseId != 0)
                    {
                        throw new Exception("houseMate already is a member of a house");
                    }

                    ParseHouseMateFields(houseMate, model);
                    await _houseMateService.UpdateHouseMate(houseMate);

                    return(Ok(houseMate));
                }
                catch (Exception)
                {
                    throw;
                }
            }

            return(BadRequest("There was a problem updating the HouseMate"));
        }
Example #2
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var houseMate = new HouseMate {
                    UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName
                };
                var result = await _userManager.CreateAsync(houseMate, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(houseMate);

                    var callbackUrl = Url.EmailConfirmationLink(houseMate.Id, code, Request.Scheme);
                    await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                    await _signInManager.SignInAsync(houseMate, isPersistent : false);

                    _logger.LogInformation("User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Example #3
0
        private async Task LoadAsync(HouseMate user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new InputModel
            {
                PhoneNumber = phoneNumber
            };
        }
Example #4
0
        public IActionResult GetHouse(int houseId)
        {
            //get current user
            var       currentUserId = _userManager.GetUserId(HttpContext.User);
            HouseMate currentUser   = _houseMateService.GetHouseMate(currentUserId);

            if (houseId != currentUser.HouseId)
            {
                return(BadRequest("Housemate's houseId does not match"));
            }

            House house = _houseService.GetHouse(houseId);

            return(Ok(house));
        }
Example #5
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new HouseMate {
                    UserName = Input.Email, Email = Input.Email, Name = Input.Name
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                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, returnUrl = returnUrl },
                    //    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, returnUrl = returnUrl }));
                    }
                    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());
        }
 public async Task UpdateHouseMate(HouseMate houseMate)
 {
     await _userManager.UpdateAsync(houseMate);
 }
 private void ParseHouseMateFields(HouseMate houseMate, UpdateHouseMateBindingModel model)
 {
     houseMate.HouseId = model.HouseId;
 }