make rank_requests/status auth-free

This commit is contained in:
Howl 2016-09-24 19:45:07 +02:00
parent 3262bbea74
commit 0e27793d25
2 changed files with 7 additions and 4 deletions

View File

@ -91,12 +91,12 @@ func Start(conf common.Conf, dbO *sqlx.DB) *gin.Engine {
gv1.GET("/blog/posts", Method(v1.BlogPostsGET))
gv1.GET("/blog/posts/content", Method(v1.BlogPostsContentGET))
gv1.GET("/scores", Method(v1.ScoresGET))
gv1.GET("/beatmaps/rank_requests/status", Method(v1.BeatmapRankRequestsStatusGET))
// ReadConfidential privilege required
gv1.GET("/friends", Method(v1.FriendsGET, common.PrivilegeReadConfidential))
gv1.GET("/friends/with", Method(v1.FriendsWithGET, common.PrivilegeReadConfidential))
gv1.GET("/users/self/donor_info", Method(v1.UsersSelfDonorInfoGET, common.PrivilegeReadConfidential))
gv1.GET("/beatmaps/rank_requests/status", Method(v1.BeatmapRankRequestsStatusGET, common.PrivilegeReadConfidential))
// Write privilege required
gv1.GET("/friends/add", Method(v1.FriendsAddGET, common.PrivilegeWrite))

View File

@ -29,7 +29,10 @@ func BeatmapRankRequestsStatusGET(md common.MethodData) common.CodeMessager {
return Err500
}
var r rankRequestsStatusResponse
if md.ID() != 0 {
// if it's not auth-free access and we have got ReadConfidential, we can
// know if this user can submit beatmaps or not.
hasConfid := md.ID() != 0 && md.User.TokenPrivileges&common.PrivilegeReadConfidential > 0
if hasConfid {
r.SubmittedByUser = new(int)
}
isFirst := true
@ -45,7 +48,7 @@ func BeatmapRankRequestsStatusGET(md common.MethodData) common.CodeMessager {
}
// if the user submitted this rank request, increase the number of
// rank requests submitted by this user
if user == md.ID() {
if user == md.ID() && r.SubmittedByUser != nil {
(*r.SubmittedByUser)++
}
// also, if this is the first result, it means it will be the next to
@ -59,7 +62,7 @@ func BeatmapRankRequestsStatusGET(md common.MethodData) common.CodeMessager {
}
r.QueueSize = c.RankQueueSize
r.MaxPerUser = c.BeatmapRequestsPerUser
if md.ID() != 0 {
if hasConfid {
x := r.Submitted < r.QueueSize && *r.SubmittedByUser < r.MaxPerUser
r.CanSubmit = &x
}