Beispiel #1
0
        public QueryResult <UserLoginModel> Execute(RefreshLoginParameter parameters)
        {
            try
            {
                var result = _dataContext.User.Where(n => n.Id == parameters.UserId)
                             .Select(n => new UserLoginModel
                {
                    IsAuthenticated = true,
                    Name            = n.FirstName + " " + n.LastName,
                    RoleId          = n.RoleId,
                    UserId          = n.Id
                }).FirstOrDefault();

                return(new QueryResult <UserLoginModel>
                {
                    Data = result != null ? result : new UserLoginModel(),
                    Message = result != null ? "Query Executed Successfully" : "No Data Present",
                    IsExecuted = true,
                    Status = CommandQueryStatus.Executed
                });
            }
            catch (Exception ex)
            {
                return(new QueryResult <UserLoginModel>
                {
                    Data = null,
                    Message = "Error While Executing Query",
                    IsExecuted = false,
                    Status = CommandQueryStatus.Failed,
                    ErrorMessage = ex.ToString()
                });
            }
        }
        public IActionResult Login([FromBody] RefreshLoginParameter refreshLoginParams)
        {
            var result = _query.Execute <QueryResult <UserLoginModel>, RefreshLoginParameter>(refreshLoginParams).Data;

            if (result != null && result.IsAuthenticated)
            {
                var secretKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("KeyForSignInSecret@1234"));
                var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

                var tokeOptions = new JwtSecurityToken(
                    issuer: "https://localhost:44386/",
                    audience: "https://localhost:44343/",
                    claims: new List <Claim>
                {
                    new Claim(ClaimTypes.Name, result.Name),
                    new Claim("UserInfo", result.UserId.ToString() + '|' + result.Name + '|' + result.RoleId.ToString())
                },
                    expires: DateTime.Now.AddMinutes(30),
                    signingCredentials: signinCredentials
                    );

                var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions);
                return(Ok(new TokenDetails
                {
                    Token = tokenString,
                    RoleId = result.RoleId.GetValueOrDefault(),
                    User = result.Name,
                    UserId = result.UserId,
                    IsAuthenticated = true
                }));
            }
            else
            {
                return(Unauthorized());
            }
        }