mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-14 03:54:21 +00:00
598a4d2d4b
add basic structure and implement first providers for IDP templates to be able to manage and use them in the future
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
package jwt
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/zitadel/oidc/v2/pkg/oidc"
|
|
"golang.org/x/text/language"
|
|
|
|
"github.com/zitadel/zitadel/internal/idp"
|
|
)
|
|
|
|
var _ idp.Session = (*Session)(nil)
|
|
|
|
// Session is the [idp.Session] implementation for the JWT provider
|
|
type Session struct {
|
|
AuthURL string
|
|
Tokens *oidc.Tokens
|
|
}
|
|
|
|
// GetAuthURL implements the [idp.Session] interface
|
|
func (s *Session) GetAuthURL() string {
|
|
return s.AuthURL
|
|
}
|
|
|
|
// FetchUser implements the [idp.Session] interface.
|
|
// It will map the received idToken into an [idp.User].
|
|
func (s *Session) FetchUser(ctx context.Context) (user idp.User, err error) {
|
|
if s.Tokens == nil {
|
|
return nil, ErrNoTokens
|
|
}
|
|
return &User{s.Tokens.IDTokenClaims}, nil
|
|
}
|
|
|
|
type User struct {
|
|
oidc.IDTokenClaims
|
|
}
|
|
|
|
func (u *User) GetID() string {
|
|
return u.IDTokenClaims.GetSubject()
|
|
}
|
|
|
|
func (u *User) GetFirstName() string {
|
|
return u.IDTokenClaims.GetGivenName()
|
|
}
|
|
|
|
func (u *User) GetLastName() string {
|
|
return u.IDTokenClaims.GetFamilyName()
|
|
}
|
|
|
|
func (u *User) GetDisplayName() string {
|
|
return u.IDTokenClaims.GetName()
|
|
}
|
|
|
|
func (u *User) GetNickname() string {
|
|
return u.IDTokenClaims.GetNickname()
|
|
}
|
|
|
|
func (u *User) GetPhone() string {
|
|
return u.IDTokenClaims.GetPhoneNumber()
|
|
}
|
|
|
|
func (u *User) IsPhoneVerified() bool {
|
|
return u.IDTokenClaims.IsPhoneNumberVerified()
|
|
}
|
|
|
|
func (u *User) GetPreferredLanguage() language.Tag {
|
|
return u.IDTokenClaims.GetLocale()
|
|
}
|
|
|
|
func (u *User) GetAvatarURL() string {
|
|
return u.IDTokenClaims.GetPicture()
|
|
}
|