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
78 lignes
1,8 Kio
Go
78 lignes
1,8 Kio
Go
package fosite
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/mohae/deepcopy"
|
|
)
|
|
|
|
// Session is an interface that is used to store session data between OAuth2 requests. It can be used to look up
|
|
// when a session expires or what the subject's name was.
|
|
type Session interface {
|
|
// SetExpiresAt sets the expiration time of a token.
|
|
//
|
|
// session.SetExpiresAt(fosite.AccessToken, time.Now().Add(time.Hour))
|
|
SetExpiresAt(key TokenType, exp time.Time)
|
|
|
|
// SetExpiresAt returns expiration time of a token if set, or time.IsZero() if not.
|
|
//
|
|
// session.GetExpiresAt(fosite.AccessToken)
|
|
GetExpiresAt(key TokenType) time.Time
|
|
|
|
// GetUsername returns the username, if set. This is optional and only used during token introspection.
|
|
GetUsername() string
|
|
|
|
// GetSubject returns the subject, if set. This is optional and only used during token introspection.
|
|
GetSubject() string
|
|
|
|
// Clone clones the session.
|
|
Clone() Session
|
|
}
|
|
|
|
// DefaultSession is a default implementation of the session interface.
|
|
type DefaultSession struct {
|
|
ExpiresAt map[TokenType]time.Time
|
|
Username string
|
|
Subject string
|
|
}
|
|
|
|
func (s *DefaultSession) SetExpiresAt(key TokenType, exp time.Time) {
|
|
if s.ExpiresAt == nil {
|
|
s.ExpiresAt = make(map[TokenType]time.Time)
|
|
}
|
|
s.ExpiresAt[key] = exp
|
|
}
|
|
|
|
func (s *DefaultSession) GetExpiresAt(key TokenType) time.Time {
|
|
if s.ExpiresAt == nil {
|
|
s.ExpiresAt = make(map[TokenType]time.Time)
|
|
}
|
|
|
|
if _, ok := s.ExpiresAt[key]; !ok {
|
|
return time.Time{}
|
|
}
|
|
return s.ExpiresAt[key]
|
|
}
|
|
|
|
func (s *DefaultSession) GetUsername() string {
|
|
if s == nil {
|
|
return ""
|
|
}
|
|
return s.Username
|
|
}
|
|
|
|
func (s *DefaultSession) GetSubject() string {
|
|
if s == nil {
|
|
return ""
|
|
}
|
|
|
|
return s.Subject
|
|
}
|
|
|
|
func (s *DefaultSession) Clone() Session {
|
|
if s == nil {
|
|
return nil
|
|
}
|
|
|
|
return deepcopy.Copy(s).(Session)
|
|
}
|