Spaces:
Running
Running
package handles | |
import ( | |
"strconv" | |
"github.com/alist-org/alist/v3/internal/model" | |
"github.com/alist-org/alist/v3/internal/op" | |
"github.com/alist-org/alist/v3/server/common" | |
"github.com/gin-gonic/gin" | |
log "github.com/sirupsen/logrus" | |
) | |
func ListUsers(c *gin.Context) { | |
var req model.PageReq | |
if err := c.ShouldBind(&req); err != nil { | |
common.ErrorResp(c, err, 400) | |
return | |
} | |
req.Validate() | |
log.Debugf("%+v", req) | |
users, total, err := op.GetUsers(req.Page, req.PerPage) | |
if err != nil { | |
common.ErrorResp(c, err, 500, true) | |
return | |
} | |
common.SuccessResp(c, common.PageResp{ | |
Content: users, | |
Total: total, | |
}) | |
} | |
func CreateUser(c *gin.Context) { | |
var req model.User | |
if err := c.ShouldBind(&req); err != nil { | |
common.ErrorResp(c, err, 400) | |
return | |
} | |
if req.IsAdmin() || req.IsGuest() { | |
common.ErrorStrResp(c, "admin or guest user can not be created", 400, true) | |
return | |
} | |
req.SetPassword(req.Password) | |
req.Password = "" | |
req.Authn = "[]" | |
if err := op.CreateUser(&req); err != nil { | |
common.ErrorResp(c, err, 500, true) | |
} else { | |
common.SuccessResp(c) | |
} | |
} | |
func UpdateUser(c *gin.Context) { | |
var req model.User | |
if err := c.ShouldBind(&req); err != nil { | |
common.ErrorResp(c, err, 400) | |
return | |
} | |
user, err := op.GetUserById(req.ID) | |
if err != nil { | |
common.ErrorResp(c, err, 500) | |
return | |
} | |
if user.Role != req.Role { | |
common.ErrorStrResp(c, "role can not be changed", 400) | |
return | |
} | |
if req.Password == "" { | |
req.PwdHash = user.PwdHash | |
req.Salt = user.Salt | |
} else { | |
req.SetPassword(req.Password) | |
req.Password = "" | |
} | |
if req.OtpSecret == "" { | |
req.OtpSecret = user.OtpSecret | |
} | |
if req.Disabled && req.IsAdmin() { | |
common.ErrorStrResp(c, "admin user can not be disabled", 400) | |
return | |
} | |
if err := op.UpdateUser(&req); err != nil { | |
common.ErrorResp(c, err, 500) | |
} else { | |
common.SuccessResp(c) | |
} | |
} | |
func DeleteUser(c *gin.Context) { | |
idStr := c.Query("id") | |
id, err := strconv.Atoi(idStr) | |
if err != nil { | |
common.ErrorResp(c, err, 400) | |
return | |
} | |
if err := op.DeleteUserById(uint(id)); err != nil { | |
common.ErrorResp(c, err, 500) | |
return | |
} | |
common.SuccessResp(c) | |
} | |
func GetUser(c *gin.Context) { | |
idStr := c.Query("id") | |
id, err := strconv.Atoi(idStr) | |
if err != nil { | |
common.ErrorResp(c, err, 400) | |
return | |
} | |
user, err := op.GetUserById(uint(id)) | |
if err != nil { | |
common.ErrorResp(c, err, 500, true) | |
return | |
} | |
common.SuccessResp(c, user) | |
} | |
func Cancel2FAById(c *gin.Context) { | |
idStr := c.Query("id") | |
id, err := strconv.Atoi(idStr) | |
if err != nil { | |
common.ErrorResp(c, err, 400) | |
return | |
} | |
if err := op.Cancel2FAById(uint(id)); err != nil { | |
common.ErrorResp(c, err, 500) | |
return | |
} | |
common.SuccessResp(c) | |
} | |
func DelUserCache(c *gin.Context) { | |
username := c.Query("username") | |
err := op.DelUserCache(username) | |
if err != nil { | |
common.ErrorResp(c, err, 500) | |
return | |
} | |
common.SuccessResp(c) | |
} | |