Beispiel #1
0
		private async Task SignInAsync(AppUser user, bool isPersistent) {
			AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie);
			AuthenticationManager.SignIn(new AuthenticationProperties {IsPersistent = isPersistent},
				await user.GenerateUserIdentityAsync(UserManager));
		}
Beispiel #2
0
		public async Task<ActionResult> Register(RegisterViewModel model) {
			if (ModelState.IsValid) {
				var user = new AppUser { UserName = model.Email, Email = model.Email };
				var result = await UserManager.CreateAsync(user, model.Password);
				if (result.Succeeded) {
					// If we have a household, add them to it
					if (model.HouseholdId != null) {
						HouseholdService.HouseholdMaps.AddUserToHousehold(user.Id.ToGuid(), (Guid) model.HouseholdId);
						// Remove the invited user
						var iuser = UserService.InvitedUsers.GetSingle(new {email = model.Email, householdid = model.HouseholdId});
						UserService.InvitedUsers.DeleteObject(iuser);
					}

					await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

					// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
					// Send an email with this link
					// string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
					// var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
					// await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

					return RedirectToAction("Index", "Home");
				}
				AddErrors(result);
			}

			// If we got this far, something failed, redisplay form
			return View(model);
		}
Beispiel #3
0
		public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) {
			if (User.Identity.IsAuthenticated) {
				return RedirectToAction("Index", "Manage");
			}

			if (ModelState.IsValid) {
				// Get the information about the user from the external login provider
				var info = await AuthenticationManager.GetExternalLoginInfoAsync();
				if (info == null) {
					return View("ExternalLoginFailure");
				}
				var user = new AppUser {UserName = model.Email, Email = model.Email};
				var result = await UserManager.CreateAsync(user);
				if (result.Succeeded) {
					result = await UserManager.AddLoginAsync(user.Id, info.Login);
					if (result.Succeeded) {
						await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
						return RedirectToLocal(returnUrl);
					}
				}
				AddErrors(result);
			}

			ViewBag.ReturnUrl = returnUrl;
			return View(model);
		}
Beispiel #4
0
 /// <summary>
 /// Map an AppUser from the DataObject User.
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public static AppUser MapFromUser(User user)
 {
     if (user != null) {
         var appUser = new AppUser();
         appUser.Id = user.Id.ToString();
         appUser.UserName = user.Email;
         appUser.Email = user.Email;
         appUser.PasswordHash = user.PasswordHash;
         appUser.SecurityStamp = user.SecurityStamp;
         appUser.IsNew = user.IsNew;
         appUser.EmailConfirmed = user.EmailConfirmed;
         return appUser;
     } else {
         return null;
     }
 }