You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
800 B
31 lines
800 B
package api
|
|
|
|
import (
|
|
"git.aiterp.net/stufflog3/stufflog3-api/internal/auth"
|
|
"git.aiterp.net/stufflog3/stufflog3-api/internal/database"
|
|
"git.aiterp.net/stufflog3/stufflog3-api/internal/slerrors"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func Scopes(g *gin.RouterGroup, db database.Database) {
|
|
g.GET("/", handler("scopes", func(c *gin.Context) (interface{}, error) {
|
|
return db.Scopes().ListByUser(c.Request.Context(), auth.UserID(c))
|
|
}))
|
|
|
|
g.GET("/:id", handler("scope", func(c *gin.Context) (interface{}, error) {
|
|
id, err := reqInt(c, "id")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
scope, err := db.Scopes().Find(c.Request.Context(), id, true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if !scope.HasMember(auth.UserID(c)) {
|
|
return nil, slerrors.NotFound("Scope")
|
|
}
|
|
|
|
return scope, nil
|
|
}))
|
|
}
|