read by token all source
This commit is contained in:
+24
-23
@@ -33,44 +33,45 @@ func (s *RedisAkses) GetOrCreateTokenSS(ctx context.Context, nik string) (string
|
||||
|
||||
// 1️⃣ ambil dari redis
|
||||
token, err := s.akses.Redis.Get(ctx, redisKey).Result()
|
||||
if err == nil && token != "" {
|
||||
if err != nil && err != redis.Nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 2️⃣ optional validation: only when nik provided, verify token masih valid
|
||||
if token != "" && nik != "" {
|
||||
code, err = s.GetPatientByNIK(nik, token)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
||||
// redis error selain key not found
|
||||
if err != nil && err != redis.Nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if code == "invalid-access-token" || token == "" {
|
||||
// hapus token dari redis
|
||||
if err := s.akses.Redis.Del(ctx, redisKey).Err(); err != nil {
|
||||
return "", err
|
||||
}
|
||||
// 2️⃣ generate token baru
|
||||
oauth := model.OauthRequest{
|
||||
ClientId: s.akses.ClientId,
|
||||
ClientSecret: s.akses.ClientSecret,
|
||||
}
|
||||
// 3️⃣ generate token baru
|
||||
oauth := model.OauthRequest{
|
||||
ClientId: s.akses.ClientId,
|
||||
ClientSecret: s.akses.ClientSecret,
|
||||
}
|
||||
|
||||
obj_token, err := s.GenerateToken(oauth)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
obj_token, err := s.GenerateToken(oauth)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if obj_token == nil || obj_token.AccessToken == "" {
|
||||
return "", errors.New(constant.ErrGenerateToken)
|
||||
}
|
||||
|
||||
// 3️⃣ simpan ke redis (opsional TTL)
|
||||
if err := s.akses.Redis.Set(ctx, redisKey, obj_token.AccessToken, 0).Err(); err != nil {
|
||||
return "", err
|
||||
}
|
||||
// 4️⃣ simpan ke redis (opsional TTL)
|
||||
if err := s.akses.Redis.Set(ctx, redisKey, obj_token.AccessToken, 0).Err(); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return obj_token.AccessToken, nil
|
||||
}else{
|
||||
return token, nil
|
||||
return obj_token.AccessToken, nil
|
||||
}
|
||||
|
||||
return token, nil
|
||||
}
|
||||
|
||||
func (o *RedisAkses) GenerateToken(req model.OauthRequest) (*model.OauthResponse, error) {
|
||||
|
||||
Reference in New Issue
Block a user