Exemplo n.º 1
0
        public async Task <IActionResult> Login(UserModelLogin userLogin)
        {
            string username = userLogin.UserName;
            string password = userLogin.Password;

            // get the ApplicationUser to verify
            //var userToVerify = await userManager.FindByNameAsync(username);
            var userToVerify = userManager.Users.Include(b => b.RefreshTokens).Single(u => u.UserName == username);

            if (userToVerify == null)
            {
                // Don't reveal that the user does not exist
                return(BadRequest());
            }

            // check the credentials
            if (await userManager.CheckPasswordAsync(userToVerify, password))
            {
                var claims = new List <Claim>()
                {
                    new Claim(JwtRegisteredClaimNames.Sub, username),                  // The "sub" (subject) claim identifies the principal that is the subject of the JWT.
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), // The "jti" (JWT ID) claim provides a unique identifier for the JWT.
                };

                // Adding roles code
                var userClaims = await userManager.GetClaimsAsync(userToVerify);        // UserManager.GetClaimsAsync(user) queries the UserClaims table.

                // var roleClaims = await roleManager.GetClaimsAsync(userToVerify);     // RoleManager.GetClaimsAsync(role) queries the RoleClaims table.
                // var roles = await userManager.GetRolesAsync(userToVerify);           // System.NotSupportedException: Store does not implement IUserRoleStore<TUser>.
                claims.AddRange(userClaims);

                // generate access token
                var accessToken = tokenService.GenerateAccessToken(claims);

                // generate and add refresh token
                var refreshToken = tokenService.GenerateRefreshToken();

                // HttpContext.Connection.RemoteIpAddress is set by XForwardedFor header
                var remoteIpAddress = HttpContext.GetRemoteIPAddress(true).MapToIPv4().ToString();
                var userAgent       = Request.Headers["User-Agent"].ToString();
                userToVerify.AddRefreshToken(refreshToken, remoteIpAddress, userAgent);
                await userManager.UpdateAsync(userToVerify);

                // return basic user info (without password) and token to store client side
                var userModel = mapper.Map <UserModel>(userToVerify);
                return(Ok(new
                {
                    User = userModel,
                    Claims = userClaims,
                    Token = accessToken,
                    RefreshToken = refreshToken
                }));
            }
            else
            {
                return(BadRequest());
            }
        }
Exemplo n.º 2
0
        public ActionResult Login(UserModelLogin _userModel)
        {
            if (ModelState.IsValid)
            {
                List <string> columns = new List <string>();
                columns.Add("email");

                List <string> values = new List <string>();
                values.Add(_userModel.EmailLogin);

                if (new DMLQuery().ExistData("usuario", columns, values))
                {
                    MD5    md5hash        = MD5.Create();
                    string passwordHashed = PasswordProcedures.ToMD5Hash(_userModel.PasswordLogin);

                    if (new UsersQuery().Login(_userModel.EmailLogin, passwordHashed))
                    {
                        var nivel = new DMLQuery().GetData("usuario_admin", "usuario", "email", _userModel.EmailLogin);

                        if (Convert.ToInt32(nivel) >= 2)
                        { //SE O NIVEL >= 1 O USUARIO TEM PERMISSÃO PARA ACESSAR O INDEX
                            AdminCookieController.AdminID    = new UsersQuery().GetUserID(_userModel.EmailLogin);
                            AdminCookieController.AdminEmail = _userModel.EmailLogin;
                            ModelState.Clear();
                            _userModel = null;
                            return(RedirectToAction("Index", "Admin"));
                        }
                        else
                        {
                            ViewBag.Message = "Usuário sem permissão";
                        }
                    }
                    else
                    {
                        ViewBag.Message = "Usuario ou senha incorreto";
                    }
                }
                else
                {
                    ViewBag.Message = "Usuário Não existe";
                }
            }

            return(View(_userModel));
        }
        public HttpResponseMessage LoginUser(UserModelLogin user)
        {
            Chat.Models.User userFull = new Chat.Models.User()
            {
                Username = user.Username,
                Password = user.Password
            };

            var userLog = this.repository.LoginUser(userFull);

            var loggedUser = new UserModelLogged()
            {
                Nickname   = userLog.Nickname,
                SessionKey = userLog.SessionKey
            };


            return(Request.CreateResponse(HttpStatusCode.OK, loggedUser));
        }
Exemplo n.º 4
0
        public BaseModel <object> Login([FromBody] UserModelLogin login)
        {
            BaseModel <object> model = new BaseModel <object>();

            var user = lc.AuthenticateUser(login.username, login.password);

            if (!user.isEnableError.Value)
            {
                model.status = 1;

                model.data = user;

                return(model);
            }

            model.status        = 0;
            model.error.message = user.isMessageError;
            model.data          = null;

            return(model);
        }