|
- // Copyright 2023 The casbin Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package controllers
-
- type Response struct {
- Status string `json:"status"`
- Msg string `json:"msg"`
- Data interface{} `json:"data"`
- Data2 interface{} `json:"data2"`
- }
-
- func (c *ApiController) ResponseOk(data ...interface{}) {
- resp := Response{Status: "ok"}
- switch len(data) {
- case 2:
- resp.Data2 = data[1]
- fallthrough
- case 1:
- resp.Data = data[0]
- }
- c.Data["json"] = resp
- c.ServeJSON()
- }
-
- func (c *ApiController) ResponseError(error string, data ...interface{}) {
- resp := Response{Status: "error", Msg: error}
- switch len(data) {
- case 2:
- resp.Data2 = data[1]
- fallthrough
- case 1:
- resp.Data = data[0]
- }
- c.Data["json"] = resp
- c.ServeJSON()
- }
-
- func (c *ApiController) RequireSignedIn() (string, bool) {
- userId := c.GetSessionUsername()
- if userId == "" {
- c.ResponseError("Please sign in first")
- return "", false
- }
- return userId, true
- }
-
- func (c *ApiController) RequireAdmin() bool {
- user := c.GetSessionUser()
- if user == nil || !user.IsAdmin {
- c.ResponseError("this operation requires admin privilege")
- return true
- }
-
- return false
- }
|