mirror of
https://github.com/tiger1103/gfast.git
synced 2026-09-21 10:12:59 +00:00
目录调整
This commit is contained in:
@@ -2,12 +2,12 @@ package admin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gfast/app/model/auth_rule"
|
"gfast/app/model/admin/auth_rule"
|
||||||
"gfast/app/model/role"
|
"gfast/app/model/admin/role"
|
||||||
"gfast/app/model/user"
|
"gfast/app/model/admin/user"
|
||||||
"gfast/app/service/auth_service"
|
"gfast/app/service/admin/auth_service"
|
||||||
|
"gfast/app/service/admin/user_service"
|
||||||
"gfast/app/service/casbin_adapter_service"
|
"gfast/app/service/casbin_adapter_service"
|
||||||
"gfast/app/service/user_service"
|
|
||||||
"gfast/library/response"
|
"gfast/library/response"
|
||||||
"gfast/library/utils"
|
"gfast/library/utils"
|
||||||
"github.com/gogf/gf/frame/g"
|
"github.com/gogf/gf/frame/g"
|
||||||
@@ -34,13 +34,30 @@ func (c *Auth) MenuList(r *ghttp.Request) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//菜单排序
|
||||||
|
func (c *Auth) MenuSort(r *ghttp.Request) {
|
||||||
|
sorts := r.Get("sorts")
|
||||||
|
s := gconv.Map(sorts)
|
||||||
|
if s == nil {
|
||||||
|
response.FailJson(true, r, "排序失败")
|
||||||
|
}
|
||||||
|
for k, v := range s {
|
||||||
|
auth_rule.Model.Where("id=?", k).Data("weigh", v).Update()
|
||||||
|
}
|
||||||
|
response.SusJson(true, r, "排序成功")
|
||||||
|
}
|
||||||
|
|
||||||
//添加菜单
|
//添加菜单
|
||||||
func (c *Auth) AddMenu(r *ghttp.Request) {
|
func (c *Auth) AddMenu(r *ghttp.Request) {
|
||||||
if r.Method == "POST" {
|
if r.Method == "POST" {
|
||||||
menu := new(auth_service.MenuReq)
|
menu := new(auth_rule.MenuReq)
|
||||||
if err := r.Parse(menu); err != nil {
|
if err := r.Parse(menu); err != nil {
|
||||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||||
}
|
}
|
||||||
|
//判断菜单规则是否存在
|
||||||
|
if !auth_service.CheckMenuNameUnique(menu.Name, 0) {
|
||||||
|
response.FailJson(true, r, "菜单规则名称已经存在")
|
||||||
|
}
|
||||||
//保存到数据库
|
//保存到数据库
|
||||||
err, _ := auth_service.AddMenu(menu)
|
err, _ := auth_service.AddMenu(menu)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -60,12 +77,16 @@ func (c *Auth) AddMenu(r *ghttp.Request) {
|
|||||||
|
|
||||||
//修改菜单
|
//修改菜单
|
||||||
func (c *Auth) EditMenu(r *ghttp.Request) {
|
func (c *Auth) EditMenu(r *ghttp.Request) {
|
||||||
id := r.GetRequestInt("id")
|
id := r.GetInt("id")
|
||||||
if r.Method == "POST" {
|
if r.Method == "POST" {
|
||||||
menu := new(auth_service.MenuReq)
|
menu := new(auth_rule.MenuReq)
|
||||||
if err := r.Parse(menu); err != nil {
|
if err := r.Parse(menu); err != nil {
|
||||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||||
}
|
}
|
||||||
|
//判断菜单规则是否存在
|
||||||
|
if !auth_service.CheckMenuNameUnique(menu.Name, id) {
|
||||||
|
response.FailJson(true, r, "菜单规则名称已经存在")
|
||||||
|
}
|
||||||
//保存到数据库
|
//保存到数据库
|
||||||
err, _ := auth_service.EditMenu(menu, id)
|
err, _ := auth_service.EditMenu(menu, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gfast/app/service/user_service"
|
"gfast/app/service/admin/user_service"
|
||||||
"gfast/library/response"
|
"gfast/library/response"
|
||||||
"github.com/gogf/gf/frame/g"
|
"github.com/gogf/gf/frame/g"
|
||||||
"github.com/gogf/gf/net/ghttp"
|
"github.com/gogf/gf/net/ghttp"
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package auth_rule
|
||||||
|
|
||||||
|
//菜单对象
|
||||||
|
type MenuReq struct {
|
||||||
|
IsMenu int `p:"ismenu" c:"ismenu" v:"min:0|max:1#菜单类型最小值为:min|菜单类型最大值为:max"`
|
||||||
|
Pid int `p:"pid" c:"pid" v:"min:0"`
|
||||||
|
Name string `p:"name" c:"name" v:"required#请填写规则名称"`
|
||||||
|
Title string `p:"title" c:"title" v:"required|length:1,100#请填写标题|标题长度在:min到:max位"`
|
||||||
|
Icon string `p:"icon" c:"icon"`
|
||||||
|
Weigh int `p:"weigh" c:"weigh"`
|
||||||
|
Condition string `p:"condition" c:"condition"`
|
||||||
|
Remark string `p:"remark" c:"remark"`
|
||||||
|
Status int `p:"status" c:"status"`
|
||||||
|
}
|
||||||
+19
-18
@@ -4,9 +4,9 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"gfast/app/model/auth_rule"
|
"gfast/app/model/admin/auth_rule"
|
||||||
"gfast/app/model/role"
|
"gfast/app/model/admin/role"
|
||||||
"gfast/app/model/user"
|
"gfast/app/model/admin/user"
|
||||||
"gfast/app/service/casbin_adapter_service"
|
"gfast/app/service/casbin_adapter_service"
|
||||||
"gfast/library/utils"
|
"gfast/library/utils"
|
||||||
"github.com/gogf/gf/database/gdb"
|
"github.com/gogf/gf/database/gdb"
|
||||||
@@ -17,19 +17,6 @@ import (
|
|||||||
"github.com/gogf/gf/util/gvalid"
|
"github.com/gogf/gf/util/gvalid"
|
||||||
)
|
)
|
||||||
|
|
||||||
//菜单对象
|
|
||||||
type MenuReq struct {
|
|
||||||
IsMenu int `p:"ismenu" c:"ismenu" v:"min:0|max:1#菜单类型最小值为:min|菜单类型最大值为:max"`
|
|
||||||
Pid int `p:"pid" c:"pid" v:"min:0"`
|
|
||||||
Name string `p:"name" c:"name" v:"required#请填写规则名称"`
|
|
||||||
Title string `p:"title" c:"title" v:"required|length:1,100#请填写标题|标题长度在:min到:max位"`
|
|
||||||
Icon string `p:"icon" c:"icon"`
|
|
||||||
Weigh int `p:"weigh" c:"weigh"`
|
|
||||||
Condition string `p:"condition" c:"condition"`
|
|
||||||
Remark string `p:"remark" c:"remark"`
|
|
||||||
Status int `p:"status" c:"status"`
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取菜单列表
|
//获取菜单列表
|
||||||
func GetMenuList(where string, params ...interface{}) (error, g.List) {
|
func GetMenuList(where string, params ...interface{}) (error, g.List) {
|
||||||
var err error
|
var err error
|
||||||
@@ -51,8 +38,22 @@ func GetMenuList(where string, params ...interface{}) (error, g.List) {
|
|||||||
return nil, gList
|
return nil, gList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//检查菜单规则是否存在
|
||||||
|
func CheckMenuNameUnique(name string, id int) bool {
|
||||||
|
model := auth_rule.Model.Where("name=?", name)
|
||||||
|
if id != 0 {
|
||||||
|
model = model.And("id!=?", id)
|
||||||
|
}
|
||||||
|
c, err := model.Count()
|
||||||
|
if err != nil {
|
||||||
|
g.Log().Error(err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return c == 0
|
||||||
|
}
|
||||||
|
|
||||||
// 添加菜单操作
|
// 添加菜单操作
|
||||||
func AddMenu(req *MenuReq) (err error, insertId int64) {
|
func AddMenu(req *auth_rule.MenuReq) (err error, insertId int64) {
|
||||||
menuMap := gconv.Map(req)
|
menuMap := gconv.Map(req)
|
||||||
now := gtime.Timestamp()
|
now := gtime.Timestamp()
|
||||||
menuMap["createtime"] = now
|
menuMap["createtime"] = now
|
||||||
@@ -64,7 +65,7 @@ func AddMenu(req *MenuReq) (err error, insertId int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//修改菜单操作
|
//修改菜单操作
|
||||||
func EditMenu(req *MenuReq, id int) (err error, rows int64) {
|
func EditMenu(req *auth_rule.MenuReq, id int) (err error, rows int64) {
|
||||||
menuMap := gconv.Map(req)
|
menuMap := gconv.Map(req)
|
||||||
now := gtime.Timestamp()
|
now := gtime.Timestamp()
|
||||||
menuMap["updatetime"] = now
|
menuMap["updatetime"] = now
|
||||||
@@ -2,9 +2,9 @@ package user_service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gfast/app/model/role"
|
"gfast/app/model/admin/role"
|
||||||
"gfast/app/model/user"
|
"gfast/app/model/admin/user"
|
||||||
"gfast/app/service/auth_service"
|
"gfast/app/service/admin/auth_service"
|
||||||
"gfast/app/service/casbin_adapter_service"
|
"gfast/app/service/casbin_adapter_service"
|
||||||
"gfast/boot"
|
"gfast/boot"
|
||||||
"gfast/library/utils"
|
"gfast/library/utils"
|
||||||
@@ -2,7 +2,7 @@ package casbin_adapter_service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gfast/app/model/casbin_rule"
|
"gfast/app/model/admin/casbin_rule"
|
||||||
"github.com/casbin/casbin/v2"
|
"github.com/casbin/casbin/v2"
|
||||||
"github.com/casbin/casbin/v2/model"
|
"github.com/casbin/casbin/v2/model"
|
||||||
"github.com/casbin/casbin/v2/persist"
|
"github.com/casbin/casbin/v2/persist"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"gfast/app/model/user"
|
"gfast/app/model/admin/user"
|
||||||
"gfast/library/response"
|
"gfast/library/response"
|
||||||
"github.com/goflyfox/gtoken/gtoken"
|
"github.com/goflyfox/gtoken/gtoken"
|
||||||
"github.com/gogf/gf/crypto/gaes"
|
"github.com/gogf/gf/crypto/gaes"
|
||||||
@@ -147,6 +147,10 @@ func signIn(username, password string, r *ghttp.Request) (error, *user.QxkjUser)
|
|||||||
if qxkjUser == nil {
|
if qxkjUser == nil {
|
||||||
return errors.New("账号或密码错误"), nil
|
return errors.New("账号或密码错误"), nil
|
||||||
}
|
}
|
||||||
|
//判断用户状态
|
||||||
|
if qxkjUser.UserStatus == 0 {
|
||||||
|
return errors.New("用户已被冻结"), nil
|
||||||
|
}
|
||||||
returnData := *qxkjUser
|
returnData := *qxkjUser
|
||||||
//更新登陆时间及ip
|
//更新登陆时间及ip
|
||||||
qxkjUser.LastLoginTime = gconv.Int(gtime.Timestamp())
|
qxkjUser.LastLoginTime = gconv.Int(gtime.Timestamp())
|
||||||
|
|||||||
+5
-11
@@ -2,12 +2,11 @@ package router
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gfast/app/model/auth_rule"
|
"gfast/app/model/admin/auth_rule"
|
||||||
|
"gfast/app/service/admin/user_service"
|
||||||
"gfast/app/service/casbin_adapter_service"
|
"gfast/app/service/casbin_adapter_service"
|
||||||
"gfast/app/service/user_service"
|
|
||||||
"gfast/library/response"
|
"gfast/library/response"
|
||||||
"gfast/library/utils"
|
"gfast/library/utils"
|
||||||
"github.com/gogf/gf/encoding/gurl"
|
|
||||||
"github.com/gogf/gf/frame/g"
|
"github.com/gogf/gf/frame/g"
|
||||||
"github.com/gogf/gf/net/ghttp"
|
"github.com/gogf/gf/net/ghttp"
|
||||||
)
|
)
|
||||||
@@ -29,14 +28,10 @@ func MiddlewareAuth(r *ghttp.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
url := r.GetUrl()
|
url := r.Request.URL
|
||||||
info, err := gurl.ParseURL(url, 32)
|
g.Log().Debug(url.Path)
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(err)
|
|
||||||
response.FailJson(true, r, "请求地址错误")
|
|
||||||
}
|
|
||||||
//获取地址对应的菜单id
|
//获取地址对应的菜单id
|
||||||
gValue, err := auth_rule.Model.Where("name=?", info["path"]).Fields("id").Value()
|
gValue, err := auth_rule.Model.Where("name=?", url.Path).Fields("id").Value()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
g.Log().Error(err)
|
g.Log().Error(err)
|
||||||
response.FailJson(true, r, "请求数据失败")
|
response.FailJson(true, r, "请求数据失败")
|
||||||
@@ -56,7 +51,6 @@ func MiddlewareAuth(r *ghttp.Request) {
|
|||||||
response.FailJson(true, r, "没有访问权限")
|
response.FailJson(true, r, "没有访问权限")
|
||||||
}
|
}
|
||||||
hasAccess := false
|
hasAccess := false
|
||||||
g.Log().Debug(groupPolicy)
|
|
||||||
for _, v := range groupPolicy {
|
for _, v := range groupPolicy {
|
||||||
if enforcer.HasPolicy(v[1], fmt.Sprintf("r_%d", menuId), "All") {
|
if enforcer.HasPolicy(v[1], fmt.Sprintf("r_%d", menuId), "All") {
|
||||||
hasAccess = true
|
hasAccess = true
|
||||||
|
|||||||
Reference in New Issue
Block a user