🚑 swagger document authority
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
package dto
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
import (
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
// AddPermissionRequestDto 添加权限请求dto
|
||||
type AddPermissionRequestDto struct {
|
||||
Permissions []model.ScaAuthPermission `json:"permissions"`
|
||||
Permissions []model.ScaAuthPermission `form:"permissions[]" json:"permissions"`
|
||||
}
|
||||
|
||||
// AddPermissionToRoleRequestDto 添加权限到角色请求dto
|
||||
type AddPermissionToRoleRequestDto struct {
|
||||
RoleKey string `json:"role_key"`
|
||||
Permissions []model.ScaAuthPermission `json:"permissions"`
|
||||
RoleKey string `json:"role_key"`
|
||||
Permission string `json:"permission"`
|
||||
Method string `json:"method"`
|
||||
}
|
||||
|
@@ -21,8 +21,9 @@ var permissionService = service.Service.PermissionService
|
||||
// @Router /api/auth/permission/add [post]
|
||||
func (PermissionAPI) AddPermissions(c *gin.Context) {
|
||||
addPermissionRequestDto := dto.AddPermissionRequestDto{}
|
||||
err := c.ShouldBindJSON(&addPermissionRequestDto)
|
||||
err := c.ShouldBind(&addPermissionRequestDto.Permissions)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
return
|
||||
}
|
||||
err = permissionService.CreatePermissions(addPermissionRequestDto.Permissions)
|
||||
@@ -34,3 +35,36 @@ func (PermissionAPI) AddPermissions(c *gin.Context) {
|
||||
result.OkWithMessage(ginI18n.MustGetMessage(c, "CreatedSuccess"), c)
|
||||
return
|
||||
}
|
||||
|
||||
// AssignPermissionsToRole 给指定角色分配权限
|
||||
// @Summary 给指定角色分配权限
|
||||
// @Description 给指定角色分配权限
|
||||
// @Tags 权限管理
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param permissions body dto.AddPermissionToRoleRequestDto true "权限列表"
|
||||
// @Router /api/auth/permission/assign [post]
|
||||
func (PermissionAPI) AssignPermissionsToRole(c *gin.Context) {
|
||||
permissionToRoleRequestDto := dto.AddPermissionToRoleRequestDto{}
|
||||
|
||||
err := c.ShouldBind(&permissionToRoleRequestDto)
|
||||
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "AssignFailed"), c)
|
||||
return
|
||||
}
|
||||
|
||||
policy, err := global.Casbin.AddPolicy(permissionToRoleRequestDto.RoleKey, permissionToRoleRequestDto.Permission, permissionToRoleRequestDto.Method)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "AssignFailed"), c)
|
||||
return
|
||||
}
|
||||
if policy == false {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "AssignFailed"), c)
|
||||
return
|
||||
}
|
||||
result.OkWithMessage(ginI18n.MustGetMessage(c, "AssignSuccess"), c)
|
||||
return
|
||||
}
|
||||
|
@@ -429,6 +429,12 @@ func (UserAPI) ResetPassword(c *gin.Context) {
|
||||
|
||||
// getUserLoginDevice 获取用户登录设备
|
||||
func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
|
||||
// 检查user.UID是否为空
|
||||
if user.UID == nil {
|
||||
global.LOG.Errorln("user.UID is nil")
|
||||
return false
|
||||
}
|
||||
userAgent := c.GetHeader("User-Agent")
|
||||
if userAgent == "" {
|
||||
global.LOG.Errorln("user-agent is empty")
|
||||
@@ -438,11 +444,12 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
|
||||
ip := utils.GetClientIP(c)
|
||||
location, err := global.IP2Location.SearchByStr(ip)
|
||||
location = utils.RemoveZeroAndAdjust(location)
|
||||
if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
||||
}
|
||||
location = utils.RemoveZeroAndAdjust(location)
|
||||
|
||||
isBot := ua.Bot()
|
||||
browser, browserVersion := ua.Browser()
|
||||
os := ua.OS()
|
||||
@@ -451,6 +458,7 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
m := ua.Model()
|
||||
platform := ua.Platform()
|
||||
engine, engineVersion := ua.Engine()
|
||||
|
||||
device := model.ScaAuthUserDevice{
|
||||
UserID: user.UID,
|
||||
IP: &ip,
|
||||
@@ -467,8 +475,10 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
EngineName: &engine,
|
||||
EngineVersion: &engineVersion,
|
||||
}
|
||||
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
|
||||
userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgent(*user.UID, ip, userAgent)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
err = userDeviceService.AddUserDevice(&device)
|
||||
@@ -476,12 +486,16 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
} else if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
||||
} else {
|
||||
err := userDeviceService.UpdateUserDevice(userDevice.ID, &device)
|
||||
if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
Reference in New Issue
Block a user