public void DecodeToken() { var user = new User { id = 3, email = "email", Roles = new List <Role> { new Role { id = Role.User } } }; var token = JwtManager.CreateToken(user); var decoder = new MyJwtDecoder(); var id = decoder.GetUserIdFromToken(token); Assert.AreEqual(user.id, id); }
public ServiceResponse <string> Login([FromBody] LoginUserRequest Request) { ServiceResponse <string> response = new ServiceResponse <string>(); GetUserResponse userResponse = _userService.LoginUserControl(Request); if (userResponse.ResultCode == (int)HttpStatusCode.OK) { TokenModel model = new TokenModel { TenantId = userResponse.User.Company.Tenant.TenantId, CompanyId = userResponse.User.CompanyId, UserId = userResponse.User.Id, UserTypeId = userResponse.User.UserTypeId, Username = userResponse.User.Username, FullName = userResponse.User.FullName, Email = userResponse.User.Email }; Tuple <string, string> token = JwtManager.CreateToken(model, JWTModel._jwtTimeMinute); if (string.IsNullOrEmpty(token.Item1)) { response.IsSuccessful = false; response.Message = "Token oluşturulamadı!"; response.ResultCode = (int)HttpStatusCode.Unauthorized; return(response); } response.Data = token.Item1; string refreshToken = token.Item2; if (!string.IsNullOrEmpty(refreshToken)) { // verilen refresh token db e yazilir BaseResponse resultInsert = InsertTokenRefresh(refreshToken, userResponse.User.Id); if (resultInsert == null || !resultInsert.IsSucceed) { response.IsSuccessful = false; response.Message = "Refresh Token eklenemedi!"; response.ResultCode = (int)HttpStatusCode.NotFound; return(response); } } } return(response); }
public object Login(string username, string password) { var user = uow.UserRepository.Get(u => (u.username == username || u.email == username) && u.password == password, includeProperties: "Customer, Roles").FirstOrDefault(); if (user == null) { return new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("Invalid username or password") } } ; if (user.Customer == null && !string.IsNullOrEmpty(user.customer_code)) //fix for code with spaces { user.Customer = uow.CustomerRepository.GetByID(user.customer_code); } user.token = JwtManager.CreateToken(user, Properties.Settings.Default.tokenExpiration); user.lastLogin = DateTime.Now; uow.Save(); uow.UserRepository.InsertSession(user, GetClientIp(Request)); user.Permissions = uow.UserRepository.GetPermissions(user); cache.Set($"permissions_{user.id}", user.Permissions, null); return(UserApiController.GetUIObject(user)); }
public RefreshTokenResponse RefreshToken([FromBody] RefreshTokenRequest Request) { RefreshTokenResponse response = new RefreshTokenResponse(); int jwtTimeMinute = JWTModel._jwtTimeMinute; GetUserRefreshTokenResponse refreshToken = GetRefreshToken(Request.RefreshToken); if (refreshToken == null) { response.IsSucceed = false; response.Message = "Refresh Token bulunamadı!"; response.ResultCode = (int)HttpStatusCode.NotFound; return(response); } if (!refreshToken.UserRefreshToken.IsActive) { response.IsSucceed = false; response.Message = "Refresh Token kullanım dışı!"; response.ResultCode = (int)HttpStatusCode.NotFound; return(response); } GetUserRequest request = new GetUserRequest { Id = refreshToken.UserRefreshToken.UserId }; UserViewModel user = _userService.Get(request).User; // yeni access token ve refresh token uretilir TokenModel tokenModel = new TokenModel() { TenantId = user.Company.Tenant.TenantId, CompanyId = user.CompanyId, UserId = user.Id, UserTypeId = user.UserTypeId, Username = user.Username, Email = user.Email, FullName = user.FullName }; Tuple <string, string> token = JwtManager.CreateToken(tokenModel, jwtTimeMinute); response.Token = token.Item1; // eski refresh token pasife alinir BaseResponse resultUpdate = RevokeTokenRefresh(refreshToken.UserRefreshToken.Id); if (resultUpdate == null || !resultUpdate.IsSucceed) { response.IsSucceed = false; response.Message = "Refresh Token pasife alınamadı!"; response.ResultCode = (int)HttpStatusCode.NotFound; return(response); } // yeni uretilen refresh token db e yazilir string newRefreshToken = token.Item2; //response.RefreshToken = newRefreshToken; BaseResponse resultInsert = InsertTokenRefresh(newRefreshToken, refreshToken.UserRefreshToken.UserId); if (resultInsert == null || !resultInsert.IsSucceed) { response.IsSucceed = false; response.Message = "Refresh Token eklenemedi!"; response.ResultCode = (int)HttpStatusCode.NotFound; return(response); } return(response); }