add GET /tokens/self
This commit is contained in:
parent
4d9ec829a8
commit
fc38503bdd
|
@ -47,6 +47,7 @@ func Start(conf common.Conf, dbO *sql.DB) *gin.Engine {
|
||||||
gv1.GET("/beatmaps", Method(v1.BeatmapGET, common.PrivilegeRead))
|
gv1.GET("/beatmaps", Method(v1.BeatmapGET, common.PrivilegeRead))
|
||||||
gv1.GET("/leaderboard", Method(v1.LeaderboardGET, common.PrivilegeRead))
|
gv1.GET("/leaderboard", Method(v1.LeaderboardGET, common.PrivilegeRead))
|
||||||
gv1.GET("/tokens", Method(v1.TokenGET, common.PrivilegeRead))
|
gv1.GET("/tokens", Method(v1.TokenGET, common.PrivilegeRead))
|
||||||
|
gv1.GET("/tokens/self", Method(v1.TokenSelfGET, common.PrivilegeRead))
|
||||||
|
|
||||||
// ReadConfidential privilege required
|
// ReadConfidential privilege required
|
||||||
gv1.GET("/friends", Method(v1.FriendsGET, common.PrivilegeReadConfidential))
|
gv1.GET("/friends", Method(v1.FriendsGET, common.PrivilegeReadConfidential))
|
||||||
|
|
|
@ -10,10 +10,15 @@ import (
|
||||||
|
|
||||||
// GetTokenFull retrieves an user ID and their token privileges knowing their API token.
|
// GetTokenFull retrieves an user ID and their token privileges knowing their API token.
|
||||||
func GetTokenFull(token string, db *sql.DB) (common.Token, bool) {
|
func GetTokenFull(token string, db *sql.DB) (common.Token, bool) {
|
||||||
var uid int
|
var t common.Token
|
||||||
var privs int
|
var privs uint64
|
||||||
var priv8 bool
|
var priv8 bool
|
||||||
err := db.QueryRow("SELECT user, privileges, private FROM tokens WHERE token = ? LIMIT 1", fmt.Sprintf("%x", md5.Sum([]byte(token)))).Scan(&uid, &privs, &priv8)
|
err := db.QueryRow("SELECT id, user, privileges, private FROM tokens WHERE token = ? LIMIT 1",
|
||||||
|
fmt.Sprintf("%x", md5.Sum([]byte(token)))).
|
||||||
|
Scan(
|
||||||
|
&t.ID, &t.UserID, &privs, &priv8,
|
||||||
|
)
|
||||||
|
t.Privileges = common.Privileges(privs)
|
||||||
if priv8 {
|
if priv8 {
|
||||||
privs = common.PrivilegeRead | common.PrivilegeReadConfidential | common.PrivilegeWrite
|
privs = common.PrivilegeRead | common.PrivilegeReadConfidential | common.PrivilegeWrite
|
||||||
}
|
}
|
||||||
|
@ -23,10 +28,7 @@ func GetTokenFull(token string, db *sql.DB) (common.Token, bool) {
|
||||||
case err != nil:
|
case err != nil:
|
||||||
panic(err)
|
panic(err)
|
||||||
default:
|
default:
|
||||||
return common.Token{
|
t.Value = token
|
||||||
Value: token,
|
return t, true
|
||||||
UserID: uid,
|
|
||||||
Privileges: common.Privileges(privs),
|
|
||||||
}, true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,6 +169,26 @@ func TokenGET(md common.MethodData) common.CodeMessager {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type tokenSingleResponse struct {
|
||||||
|
common.ResponseBase
|
||||||
|
token
|
||||||
|
}
|
||||||
|
|
||||||
|
// TokenSelfGET retrieves information about the token the user is connecting with.
|
||||||
|
func TokenSelfGET(md common.MethodData) common.CodeMessager {
|
||||||
|
var r tokenSingleResponse
|
||||||
|
// md.User.ID = token id, userid would have been md.User.UserID. what a clusterfuck
|
||||||
|
err := md.DB.QueryRow("SELECT id, privileges, description FROM tokens WHERE id = ?", md.User.ID).Scan(
|
||||||
|
&r.ID, &r.Privileges, &r.Description,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
md.Err(err)
|
||||||
|
return Err500
|
||||||
|
}
|
||||||
|
r.Code = 200
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
// TokenFixPrivilegesGET fixes the privileges on the token of the given user,
|
// TokenFixPrivilegesGET fixes the privileges on the token of the given user,
|
||||||
// or of all the users if no user is given.
|
// or of all the users if no user is given.
|
||||||
func TokenFixPrivilegesGET(md common.MethodData) common.CodeMessager {
|
func TokenFixPrivilegesGET(md common.MethodData) common.CodeMessager {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package common
|
||||||
|
|
||||||
// Token Is an API token.
|
// Token Is an API token.
|
||||||
type Token struct {
|
type Token struct {
|
||||||
|
ID int
|
||||||
Value string
|
Value string
|
||||||
UserID int
|
UserID int
|
||||||
Privileges Privileges
|
Privileges Privileges
|
||||||
|
|
Loading…
Reference in New Issue
Block a user