private static ClaimsIdentity GetIdentity(LoginUserParam loginUserParam) { using (var db = new ApplicationContext()) { var userData = (from user in db.Users join role in db.Roles on user.RoleId equals role.Id where user.Email == loginUserParam.Email && user.Password == loginUserParam.Password select new { user.Email, role.RoleName }).FirstOrDefault(); if (userData == null) { return(null); } var claims = new List <Claim> { new Claim(ClaimsIdentity.DefaultNameClaimType, userData.Email), new Claim(ClaimsIdentity.DefaultRoleClaimType, userData.RoleName) }; return(new ClaimsIdentity( claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType )); } }
public ActionResult <string> Login([FromBody] LoginUserParam loginUserParam) { try { var db = new ApplicationContext(); var userData = db.Users.FirstOrDefault(u => u.Email == loginUserParam.Email); if (userData == null) { return(_apiError.UserNotFount); } Sub.Publish( RedisEvents.Events.ChannelName, RedisContext.CreateMessage(RedisEvents.Events.LoginUserEvent, loginUserParam) ); var token = RetryGetToken(loginUserParam.Email); RedisCache.KeyDelete(loginUserParam.Email); return(token == null ? _apiError.UserNotFount : Ok(new { AccessToken = token })); } catch (Exception e) { Console.WriteLine(e); return(_apiError.ServerError); } }