Пример #1
0
        public IActionResult Login([FromBody] APIUsers.Library.Models.UserMin user)
        {
            if (user == null)
            {
                return(BadRequest("Invalid client request"));
            }

            var ConnectionStringLocal = _configuration.GetValue <string>("ServidorAzure");

            using (APIUsers.Library.Interfaces.ILogin Login = APIUsers.Library.Interfaces.Factorizador.CrearConexionServicioLogin(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal)){
                APIUsers.Library.Models.User objusr = Login.EstablecerLogin(user.Nick, user.Password);

                if (objusr == null)
                {
                    return(Unauthorized());
                }


                var secretKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetValue <string>("SecretKey")));
                var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);


                var claims = new List <Claim> {
                    new Claim(ClaimTypes.Name, objusr.Nick),
                    new Claim(ClaimTypes.Role, objusr.Role),
                    new Claim("Id", objusr.ID.ToString()),
                    new Claim("imagen", objusr.Imagen)
                };

                var tokeOptions = new JwtSecurityToken(
                    issuer: "https://api03mtw102.azurewebsites.net",
                    audience: "https://api03mtw102.azurewebsites.net",
                    claims: claims,
                    expires: DateTime.Now.AddMinutes(120),
                    signingCredentials: signinCredentials
                    );


                var tokenString   = new JwtSecurityTokenHandler().WriteToken(tokeOptions);
                var refreshString = GenerateRefreshToken();

                objusr.RefreshToken           = refreshString;
                objusr.RefreshTokenExpiryTime = DateTime.Now.AddDays(7);

                using (APIUsers.Library.Interfaces.IUser User = APIUsers.Library.Interfaces.Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
                {
                    User.UpdateUserRefreshToken(objusr);
                }



                return(Ok(new {
                    Token = tokenString,
                    RefreshToken = refreshString
                }));
            }
        }
Пример #2
0
 public IActionResult GetUserByNick(string nick)
 {
     APIUsers.Library.Models.User user = new APIUsers.Library.Models.User();
     var ConnectionStringLocal = _configuration.GetValue<string>("ServidorAzure");
     using (IUser User = Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
     {
         user = User.GetUser(nick);
     }
     return Ok(new { user });
 }
Пример #3
0
 public Boolean UpdateUserDomicilio([FromBody] APIUsers.Library.Models.User value)
 {
     Boolean status;
     var ConnectionStringLocal = _configuration.GetValue<string>("ServidorAzure");
     using (IUser User = Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
     {
         status = User.UpdateUser_domicilio(value);
     }
     return status;
 }
        public IActionResult Refresh(Models.Token token)
        {
            if (token is null)
            {
                return(BadRequest("Invalid client request"));
            }
            string accessToken  = token.AccessToken;
            string refreshToken = token.RefreshToken;
            var    principal    = GetPrincipalFromExpiredToken(accessToken);
            var    username     = principal.Identity.Name; //this is mapped to the Name claim by default

            var ConnectionStringLocal = _configuration.GetValue <string>("ServidorAzure");

            using (APIUsers.Library.Interfaces.IUser User = APIUsers.Library.Interfaces.Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
            {
                APIUsers.Library.Models.User objusr = User.CheckRefreshToken(username);

                if (objusr == null || objusr.RefreshToken != refreshToken || objusr.RefreshTokenExpiryTime <= DateTime.Now)
                {
                    return(BadRequest("Invalid client request"));
                }

                var secretKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetValue <string>("SecretKey")));
                var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);


                var tokeOptions = new JwtSecurityToken(
                    issuer: "https://api03mtw102.azurewebsites.net",
                    audience: "https://api03mtw102.azurewebsites.net",
                    claims: principal.Claims,
                    expires: DateTime.Now.AddMinutes(120),
                    signingCredentials: signinCredentials
                    );


                var tokenString   = new JwtSecurityTokenHandler().WriteToken(tokeOptions);
                var refreshString = GenerateRefreshToken();

                objusr.RefreshToken           = refreshString;
                objusr.RefreshTokenExpiryTime = DateTime.Now.AddDays(7);

                using (APIUsers.Library.Interfaces.IUser User2 = APIUsers.Library.Interfaces.Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
                {
                    User2.UpdateUserRefreshToken(objusr);
                }


                return(new ObjectResult(new
                {
                    Token = tokenString,
                    RefreshToken = refreshString
                }));
            }
        }
        public IActionResult Revoke()
        {
            var username = User.Identity.Name;
            //var user = userContext.LoginModels.SingleOrDefault(u => u.UserName == username);
            var ConnectionStringLocal = _configuration.GetValue <string>("ServidorLocal");

            using (IUser User = Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
            {
                APIUsers.Library.Models.User user = User.GetUser(username);
                if (user == null)
                {
                    return(BadRequest());
                }
                user.RefreshToken = null;
                //userContext.SaveChanges();
                User.UpdateRefreshToken(user);
                return(NoContent());
            }
        }
Пример #6
0
        public IActionResult Login([FromBody] UserMin user)
        {
            if (user == null)
            {
                return(BadRequest("Invalid client request"));
            }


            var ConnectionStringLocal = _configuration.GetValue <string>("ServidorLocal");

            using (ILogin Login = Factorizador.CrearConexionServicioLogin(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
            {
                //id = User.InsertUser(value.Nick, Functions.GetSHA256(value.Password));
                APIUsers.Library.Models.User objusr = Login.EsblecerLogin(user.Nick, user.Password);
                if (objusr.ID > 0)
                {
                    //if (user.Nick == "rgatilanov" && user.Password == "4297f44b13955235245b2497399d7a93") //MD5 (123123)
                    //{
                    var secretKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetValue <string>("SecretKey")));
                    var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

                    var tokeOptions = new JwtSecurityToken(
                        issuer: "http://localhost:44369",
                        audience: "http://localhost:44369",
                        claims: new List <System.Security.Claims.Claim>(),
                        expires: DateTime.Now.AddMinutes(5),
                        signingCredentials: signinCredentials
                        );

                    var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions);
                    return(Ok(new { Token = tokenString }));
                    //}
                }
                else
                {
                    return(Unauthorized());
                }
            }
        }
        public IActionResult Refresh(TokenApiModel tokenApiModel)
        {
            if (tokenApiModel is null)
            {
                return(BadRequest("Invalid client request"));
            }
            string accessToken  = tokenApiModel.AccessToken;
            string refreshToken = tokenApiModel.RefreshToken;
            //var principal = tokenService.GetPrincipalFromExpiredToken(accessToken);
            var principal = tokenService.GetPrincipalFromExpiredToken(accessToken, new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetValue <string>("SecretKey"))));
            var username  = principal.Identity.Name; //this is mapped to the Name claim by default
            //En lugar de usar la conexión por contexto, usamos la conexión mediante los servicios ya creados.
            //var user = userContext.LoginModels.SingleOrDefault(u => u.UserName == username);
            //Conexión mediante clase Login
            var ConnectionStringLocal = _configuration.GetValue <string>("ServidorLocal");

            using (IUser User = Factorizador.CrearConexionServicio(APIUsers.Library.Models.ConnectionType.MSSQL, ConnectionStringLocal))
            {
                APIUsers.Library.Models.User user = User.GetUser(username);
                if (user == null || user.RefreshToken != refreshToken || user.RefreshTokenExpiryTime <= DateTime.Now)
                {
                    return(BadRequest("Invalid client request"));
                }
                //var newAccessToken = tokenService.GenerateAccessToken(principal.Claims);
                var newAccessToken  = tokenService.GenerateAccessToken(principal.Claims, new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetValue <string>("SecretKey"))));
                var newRefreshToken = tokenService.GenerateRefreshToken();
                user.RefreshToken = newRefreshToken;
                //userContext.SaveChanges();
                User.UpdateRefreshToken(user);
                return(new ObjectResult(new
                {
                    accessToken = newAccessToken,
                    refreshToken = newRefreshToken
                }));
            }
        }