public GenericPrincipal GetByRefreshToken(string refresh_token) { using (var obj = new AspNetUsersBusiness()) { var user = obj.GetByRefreshToken(refresh_token); if (user != null) { var identity = new AuthenticationIdentity(user.User.Username); identity.AddClaim(new Claim("Id", user.Userid.ToString())); identity.AddClaim(new Claim("Modulo", "0")); identity.AddClaim(new Claim(ClaimTypes.Name, user.User.Username)); return(new GenericPrincipal(identity, null));; } return(null); } }
public IActionResult Index(AuthenticationIdentity identity) { if (!ModelState.IsValid) { return(View("Authentication", identity)); } MvcIdentityModel computed = Identity.GetIdentityByEmail(identity.Email); if (computed == default(MvcIdentityModel)) { ModelState.AddModelError("General", "The entered email and/or password is incorrect!"); return(View("Authentication", identity)); } if (!computed.VerifyPassword(identity.Password)) { ModelState.AddModelError("General", "The entered email and/or password is incorrect!"); return(View("Authentication", identity)); } var sid = Request.Cookies.ContainsKey("SID") ? Guid.Parse(Request.Cookies["SID"]) : Guid.Empty; if (sid == Guid.Empty) { ModelState.AddModelError("General", "The session ID was lost between authentication steps!"); return(View("Authentication", identity)); } var session = SessionStore.GetSession(sid); var authRequest = session.GetAttribute <AuthRequestPayload>("AuthRequest"); var authResponse = new AuthResponsePayload() { Authenticated = true, RequestId = authRequest.RequestId, SessionId = session.Guid, SessionExpiry = session.ExpiryTime, Identity = computed.ToBaseModel() }; session["AuthPayload"] = authResponse; HttpHandler.Post(authRequest.ResponseUri, authResponse.Encode()).Wait(); return(Redirect(authRequest.RedirectUri.ToString())); }
public IActionResult Index(MvcIdentityModel identity) { if (!ModelState.IsValid) { return(View("Registration", identity)); } if (!UsernameAvailable(identity.Username)) { ModelState.AddModelError("Username", "This username is already taken!"); return(View("Registration", identity)); } if (!EmailAvailable(identity.Email)) { ModelState.AddModelError("Email", "This email is already in use!"); return(View("Registration", identity)); } var authIdentity = new AuthenticationIdentity() { Email = identity.Email, NewAccount = true, PendingActivation = true }; identity.IpAddress = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); var activationToken = RandomData.String(16); var pendingActivation = new PendingActivationIdentity() { ActivationToken = activationToken, Identity = identity }; CacheStore.Create(activationToken, DateTime.UtcNow.AddHours(1), pendingActivation); SendGridHandler.SendRegistrationMail(identity, activationToken).Wait(); return(RedirectToAction("Index", "Authentication", authIdentity)); }
public IActionResult Index() { if (Request.Query.Count == 0) { return(BadRequest("No ActivationToken was found in the query parameters!")); } if (!Request.Query.ContainsKey("ActivationToken")) { return(BadRequest("No ActivationToken was found in the query parameters!")); } var activationToken = Request.Query["ActivationToken"]; if (string.IsNullOrEmpty(activationToken)) { return(BadRequest("The ActivationToken parameter was defined but doesn't have any value!")); } var cacheItem = CacheStore.Get(activationToken); if (cacheItem == null) { return(BadRequest("The ActivationToken has expired! Please register again!")); } var pendingActivationIdentity = (PendingActivationIdentity)cacheItem.Data; BL.Identity.CreateIdentity(pendingActivationIdentity.Identity); var authIdentity = new AuthenticationIdentity() { Email = pendingActivationIdentity.Identity.Email, NewAccount = true, PendingActivation = false }; return(RedirectToAction("Index", "Authentication", authIdentity)); }
public IActionResult Index() { if (Request.Query.Count == 0) { return(Redirect("https://andreihava.net/")); } if (Request.Query.ContainsKey("Email")) { var email = Request.Query.ContainsKey("Email") ? Request.Query["Email"].ToString() : string.Empty; if (string.IsNullOrEmpty(email)) { return(BadRequest("Email parameter was defined but didn't have a value!")); } var newReg = Request.Query.ContainsKey("NewAccount") && bool.Parse(Request.Query["NewAccount"].ToString()); var pendingActivation = Request.Query.ContainsKey("PendingActivation") && bool.Parse(Request.Query["PendingActivation"].ToString()); if (string.IsNullOrEmpty(email)) { return(View("Authentication", new AuthenticationIdentity())); } var identity = new AuthenticationIdentity { Email = email, NewAccount = newReg, PendingActivation = pendingActivation }; return(View("Authentication", identity)); } if (Request.Query.ContainsKey("AuthToken")) { Session session; AuthRequestPayload authRequest; var authToken = Request.Query.ContainsKey("AuthToken") ? Request.Query["AuthToken"].ToString() : string.Empty; if (string.IsNullOrEmpty(authToken)) { return(BadRequest("AuthToken parameter was defined but didn't have a value!")); } authRequest = AuthRequestPayload.Decode(authToken); if (Request.Cookies.ContainsKey("SID")) { var sid = Guid.Parse(Request.Cookies["SID"]); session = SessionStore.GetSession(sid); if (session == null || !session.IsValid()) { session = SessionStore.CreateSession(TimeSpan.FromHours(12)); } else { var authResponse = session.GetAttribute <AuthResponsePayload>("AuthPayload"); authResponse.RequestId = authRequest.RequestId; HttpHandler.Post(authRequest.ResponseUri, authResponse.Encode()).Wait(); return(Redirect(authRequest.RedirectUri.ToString())); } } else { session = SessionStore.CreateSession(TimeSpan.FromHours(12)); } session["AuthRequest"] = authRequest; Response.Cookies.Append("SID", session.Guid.ToString(), new CookieOptions() { Domain = Request.Host.Host, HttpOnly = true, SameSite = SameSiteMode.Strict, Expires = DateTimeOffset.UtcNow.AddHours(12) }); Response.Cookies.Append("RID", authRequest.RequestId.ToString(), new CookieOptions() { Domain = Request.Host.Host, HttpOnly = true, SameSite = SameSiteMode.Strict }); return(View("Authentication", new AuthenticationIdentity())); } return(BadRequest()); }