1
This commit is contained in:
51
internal/auth/keycloak/interface.go
Normal file
51
internal/auth/keycloak/interface.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package keycloak
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/Nerzal/gocloak/v13"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Env string
|
||||
AuthServerAddr string
|
||||
Realm string
|
||||
ClientId string
|
||||
ClientSecret string
|
||||
}
|
||||
|
||||
func New(c *Config) (*Client, error) {
|
||||
cli := &Client{
|
||||
client: gocloak.NewClient(c.AuthServerAddr),
|
||||
jwtManager: NewJWTManager(),
|
||||
|
||||
env: c.Env,
|
||||
realm: c.Realm,
|
||||
clientId: c.ClientId,
|
||||
clientSecret: c.ClientSecret,
|
||||
}
|
||||
|
||||
return cli, nil
|
||||
}
|
||||
|
||||
func (k *Client) handleError(err error) error {
|
||||
var apiErr *gocloak.APIError
|
||||
|
||||
if !errors.As(err, &apiErr) {
|
||||
return ErrInternal
|
||||
}
|
||||
|
||||
switch apiErr.Code {
|
||||
case http.StatusNotFound:
|
||||
return ErrRealmClientNotFound
|
||||
case http.StatusUnauthorized:
|
||||
return ErrRealmClientUnauthorized
|
||||
case http.StatusConflict:
|
||||
return ErrAlreadyExists
|
||||
case http.StatusBadRequest:
|
||||
return ErrBadRequest
|
||||
default:
|
||||
return ErrInternal
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user