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
74 lignes
1,5 Kio
Go
74 lignes
1,5 Kio
Go
package jwt
|
|
|
|
import "time"
|
|
|
|
// Mapper is the interface used internally to map key-value pairs
|
|
type Mapper interface {
|
|
ToMap() map[string]interface{}
|
|
Add(key string, value interface{})
|
|
Get(key string) interface{}
|
|
}
|
|
|
|
// ToString will return a string representation of a map
|
|
func ToString(i interface{}) string {
|
|
if i == nil {
|
|
return ""
|
|
}
|
|
|
|
if s, ok := i.(string); ok {
|
|
return s
|
|
}
|
|
|
|
if sl, ok := i.([]string); ok {
|
|
if len(sl) == 1 {
|
|
return sl[0]
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// ToTime will try to convert a given input to a time.Time structure
|
|
func ToTime(i interface{}) time.Time {
|
|
if i == nil {
|
|
return time.Time{}
|
|
}
|
|
|
|
if t, ok := i.(int64); ok {
|
|
return time.Unix(t, 0)
|
|
} else if t, ok := i.(float64); ok {
|
|
return time.Unix(int64(t), 0)
|
|
} else if t, ok := i.(time.Time); ok {
|
|
return t
|
|
}
|
|
|
|
return time.Time{}
|
|
}
|
|
|
|
// Filter will filter out elemets based on keys in a given input map na key-slice
|
|
func Filter(elements map[string]interface{}, keys ...string) map[string]interface{} {
|
|
var keyIdx = make(map[string]bool)
|
|
var result = make(map[string]interface{})
|
|
|
|
for _, key := range keys {
|
|
keyIdx[key] = true
|
|
}
|
|
|
|
for k, e := range elements {
|
|
if _, ok := keyIdx[k]; !ok {
|
|
result[k] = e
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
// Copy will copy all elements in a map and return a new representational map
|
|
func Copy(elements map[string]interface{}) (result map[string]interface{}) {
|
|
result = make(map[string]interface{}, len(elements))
|
|
for k, v := range elements {
|
|
result[k] = v
|
|
}
|
|
|
|
return result
|
|
}
|