Exemplo n.º 1
0
 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());
        }