70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package repository
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.0x0001f346.de/andreas/gin-oauth2-demo/core"
|
|
"golang.org/x/oauth2"
|
|
)
|
|
|
|
var users map[string]core.User = map[string]core.User{}
|
|
var accessTokens map[string]oauth2.Token = map[string]oauth2.Token{}
|
|
var accessTokenToUserMapping map[string]string = map[string]string{}
|
|
|
|
func DeleteAccessToken(s string) {
|
|
delete(accessTokens, s)
|
|
}
|
|
|
|
func DeleteAccessTokenToUserMapping(s string) {
|
|
delete(accessTokenToUserMapping, s)
|
|
}
|
|
|
|
func DeleteUser(uuid string) {
|
|
delete(users, uuid)
|
|
}
|
|
|
|
func GetAccessToken(s string) (oauth2.Token, error) {
|
|
accessToken, accessTokenExists := accessTokens[s]
|
|
if !accessTokenExists {
|
|
return oauth2.Token{}, fmt.Errorf("AccessToken not in repository: %s", s)
|
|
}
|
|
|
|
return accessToken, nil
|
|
}
|
|
|
|
func GetAccessTokenToUserMapping(s string) (string, error) {
|
|
uuid, accessTokenToUserMappingExists := accessTokenToUserMapping[s]
|
|
if !accessTokenToUserMappingExists {
|
|
return "", fmt.Errorf("no user mapped to AccessToken: %s", s)
|
|
}
|
|
|
|
return uuid, nil
|
|
}
|
|
|
|
func GetUser(uuid string) (core.User, error) {
|
|
user, userExists := users[uuid]
|
|
if !userExists {
|
|
return core.User{}, fmt.Errorf("user not in repository: %s", uuid)
|
|
}
|
|
|
|
return user, nil
|
|
}
|
|
|
|
func SetAccessToken(token oauth2.Token) error {
|
|
accessTokens[token.AccessToken] = token
|
|
|
|
return nil
|
|
}
|
|
|
|
func SetAccessTokenToUserMapping(token string, uuid string) error {
|
|
accessTokenToUserMapping[token] = uuid
|
|
|
|
return nil
|
|
}
|
|
|
|
func SetUser(user core.User) error {
|
|
users[user.UUID] = user
|
|
|
|
return nil
|
|
}
|