Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }