03ea72595d
* Initial Commit for OAuth API This builds and run and return the right error. Need to test it and then adding all users as possible client * Added mising dependency * just compile already... * Fixing template test * Imrpovements Moved db stuff in models Added some tests Added form in modpanel to add/update a client Added controllers for add/update of client * Added Forms + speed improvements Controller oauth client listing + html Controller oauth client delete + messages Messages on comment delete New ES config that disable ES if set to false. Improve load speed on local development Fix a load config bug Fix index admin & translation string sign_out broken by @ewhal * Sanitize empty strig in form array + css Multiple empty array of strings are sanitized for the oauth client create form Added some css for the form display * Upload and Create form works * Fix splitting response types * Removing required on secret when updating * fix travis error * Fix travis template test * Update dependency * Moved to jinzhu instead of azhao * randomizen secret on creation * Final touch on oath api improved display name fix grant form csrf fix login csrf on oauth * Fix gorm test * fix template test * Fixing deleted dependency issue * Make travis faster * Fix typo * Fix csrf for api calls * This shouldn't be exempt * Removing hard coded hash @ewhal Don't forget to replace the hash in tokens.go with another one * Added an example on how to use OAuth middleware * Renamed fosite utils to oauth2 utils
83 lignes
1,5 Kio
Go
83 lignes
1,5 Kio
Go
package oauth2
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/mohae/deepcopy"
|
|
"github.com/ory/fosite"
|
|
"github.com/ory/fosite/token/jwt"
|
|
)
|
|
|
|
type JWTSessionContainer interface {
|
|
// GetJWTClaims returns the claims.
|
|
GetJWTClaims() *jwt.JWTClaims
|
|
|
|
// GetJWTHeader returns the header.
|
|
GetJWTHeader() *jwt.Headers
|
|
|
|
fosite.Session
|
|
}
|
|
|
|
// JWTSession Container for the JWT session.
|
|
type JWTSession struct {
|
|
JWTClaims *jwt.JWTClaims
|
|
JWTHeader *jwt.Headers
|
|
ExpiresAt map[fosite.TokenType]time.Time
|
|
Username string
|
|
Subject string
|
|
}
|
|
|
|
func (j *JWTSession) GetJWTClaims() *jwt.JWTClaims {
|
|
if j.JWTClaims == nil {
|
|
j.JWTClaims = &jwt.JWTClaims{}
|
|
}
|
|
return j.JWTClaims
|
|
}
|
|
|
|
func (j *JWTSession) GetJWTHeader() *jwt.Headers {
|
|
if j.JWTHeader == nil {
|
|
j.JWTHeader = &jwt.Headers{}
|
|
}
|
|
return j.JWTHeader
|
|
}
|
|
|
|
func (s *JWTSession) SetExpiresAt(key fosite.TokenType, exp time.Time) {
|
|
if s.ExpiresAt == nil {
|
|
s.ExpiresAt = make(map[fosite.TokenType]time.Time)
|
|
}
|
|
s.ExpiresAt[key] = exp
|
|
}
|
|
|
|
func (s *JWTSession) GetExpiresAt(key fosite.TokenType) time.Time {
|
|
if s.ExpiresAt == nil {
|
|
s.ExpiresAt = make(map[fosite.TokenType]time.Time)
|
|
}
|
|
|
|
if _, ok := s.ExpiresAt[key]; !ok {
|
|
return time.Time{}
|
|
}
|
|
return s.ExpiresAt[key]
|
|
}
|
|
|
|
func (s *JWTSession) GetUsername() string {
|
|
if s == nil {
|
|
return ""
|
|
}
|
|
return s.Username
|
|
}
|
|
|
|
func (s *JWTSession) GetSubject() string {
|
|
if s == nil {
|
|
return ""
|
|
}
|
|
|
|
return s.Subject
|
|
}
|
|
|
|
func (s *JWTSession) Clone() fosite.Session {
|
|
if s == nil {
|
|
return nil
|
|
}
|
|
|
|
return deepcopy.Copy(s).(fosite.Session)
|
|
}
|