Version: v0.4.6 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jun 30, 2021 License: MIT Imports: 30 Imported by: 0



从数据库中获取角色权限 并验证角色权限的包

AuthItem 路由和角色控制



View Source
const SELECT_System_Config_SQL string = `` /* 626-byte string literal not displayed */
View Source
const SaltSize = 16


View Source
var (
	LOCAL_SEED_USER_NAME = make(chan string) // 随机用户名种子


func AuthItemsHandler

func AuthItemsHandler(c *assist.Context) (err error)

根据条件查询全部的路由 通过类型区分

func BeginLocalSeedUserName

func BeginLocalSeedUserName()


func CreateAuthItemsHandler

func CreateAuthItemsHandler(c *assist.Context) (err error)


func CreateSystemConfigsHandler

func CreateSystemConfigsHandler(c *assist.Context) (err error)

func CreateUserHandler

func CreateUserHandler(c *assist.Context) (err error)


func DelAuthItemsHandler

func DelAuthItemsHandler(c *assist.Context) (err error)

DelAuthItemsHandler 删除一个路由

func DelSystemConfigsHandler

func DelSystemConfigsHandler(c *assist.Context) (err error)

DelSystemConfigsHandler 删除一个菜单 这里会找3级菜单, 然后全部删除掉

func DelUsersHandler

func DelUsersHandler(c *assist.Context) (err error)

DelUsersHandler 删除一个用户

func EditAuthItemsHandler

func EditAuthItemsHandler(c *assist.Context) (err error)

EditAuthItemsHandler 编辑一个路由

func EditSystemConfigsHandler

func EditSystemConfigsHandler(c *assist.Context) (err error)

func EditUsersHandler

func EditUsersHandler(c *assist.Context) (err error)

修改一个用户 EditUsersHandler 编辑一个路由

func PasswordHash

func PasswordHash(plain string) string

func PasswordVerify

func PasswordVerify(secret, plain string) bool

func RoleAuthItemsChildsHandler

func RoleAuthItemsChildsHandler(c *assist.Context) (err error)

RoleAuthItemsChildsHandler 获取角色对应的全部角色关系和功能权限信息

func RolesHandler

func RolesHandler(c *assist.Context) (err error)

func SystemConfigsHandler

func SystemConfigsHandler(c *assist.Context) (err error)

func UsersHandler

func UsersHandler(c *assist.Context) (err error)

根据条件查询全部的路由 通过类型区分


type Adapter

type Adapter struct {
	Conn redis.Conn
	// contains filtered or unexported fields

func NewAdapter

func NewAdapter(network string, address string, pwd string) *Adapter


func NewAdapterDB

func NewAdapterDB(driverName string, dataSourceName string) *Adapter

func (*Adapter) AddPolicy

func (a *Adapter) AddPolicy(sec string, ptype string, rule []string) error

AddPolicy adds a policy rule to the storage.

func (*Adapter) LoadPolicy

func (a *Adapter) LoadPolicy(model model.Model) (err error)

LoadPolicy 重新实现载入 角色和路由对照关系的内容

func (*Adapter) RemoveFilteredPolicy

func (a *Adapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) error

RemoveFilteredPolicy removes policy rules that match the filter from the storage.

func (*Adapter) RemovePolicy

func (a *Adapter) RemovePolicy(sec string, ptype string, rule []string) error

RemovePolicy removes a policy rule from the storage.

func (*Adapter) SavePolicy

func (a *Adapter) SavePolicy(model model.Model) error

type AuthAssignment

type AuthAssignment struct {
	ItemName  string
	UserID    string
	CreatedAt int64


func (*AuthAssignment) Add

func (p *AuthAssignment) Add(itemName string, userID string) (err error)

Add 为user添加一个角色

func (*AuthAssignment) AddDefault

func (p *AuthAssignment) AddDefault(userID string) (err error)

AddDefault 创建一个默认的角色

func (*AuthAssignment) Del

func (p *AuthAssignment) Del(userID int, s *gorm.DB) (err error)


type AuthAssignments

type AuthAssignments struct {
	AuthAssignments []AuthAssignment //  全部权限



func (*AuthAssignments) BatchAdd

func (p *AuthAssignments) BatchAdd(s *gorm.DB) (err error)

BatchAdd 批量添加角色 事务一致性的函数 配合其他库使用

func (*AuthAssignments) GetUserAll

func (p *AuthAssignments) GetUserAll(userID int)

GetUserAll 获取user的全部角色

type AuthItem

type AuthItem struct {
	Name        string `gorm:"size:64"`
	Type        int
	Description string `gorm:"size:256"`
	RouterName  string `gorm:"size:256"` // 路由名称
	RouterType  int    // 服务还是页面 页面是1 服务是2
	ModelName   string // 模块名称
	BusName     string // 业务名称
	CreatedAt   int64
	UpdatedAt   int64

func (*AuthItem) Add

func (p *AuthItem) Add(name string, authType int, description string)

Add 新增一个路由或者角色 authType枚举值 1 角色 2 路由

func (*AuthItem) Create

func (p *AuthItem) Create(createAuthItem *CreateAuthItem) (err error)

Create 创建一个路由

func (*AuthItem) Del

func (p *AuthItem) Del(name string, authType int) (err error)

Del 删除一个路由

func (*AuthItem) Edit

func (p *AuthItem) Edit(svc *SvcEditAuthItems) (err error)

type AuthItemChild

type AuthItemChild struct {
	Parent string
	Child  string

func (*AuthItemChild) Add

func (p *AuthItemChild) Add(parent string, child string) (err error)

Add 为某个角色增加一个路由

func (*AuthItemChild) Del

func (p *AuthItemChild) Del(parent string, child string)

Del 为某个角色删除一个路由

type AuthItemChildAdds

type AuthItemChildAdds []AuthItemChild

type AuthItemChilds

type AuthItemChilds struct {
	AuthItemChilds []AuthItemChild
	RoleAuths      []AuthItemChild // 角色与角色关系权限组
	RouterAuths    []AuthItemChild // 角色和功能权限关系组

func (*AuthItemChilds) AssignGroup

func (p *AuthItemChilds) AssignGroup(r *Roles)


func (*AuthItemChilds) GetAll

func (p *AuthItemChilds) GetAll()

func (*AuthItemChilds) GetGroup

func (p *AuthItemChilds) GetGroup(r *Roles)


func (*AuthItemChilds) GetRoleAuths

func (p *AuthItemChilds) GetRoleAuths(roleName string)

type AuthItems

type AuthItems []AuthItem

func (*AuthItems) GetAll

func (p *AuthItems) GetAll(authItemType int) (err error)

func (*AuthItems) GetAllByType

func (p *AuthItems) GetAllByType(pageSize int, offsetCount int, selected Selected, sort Sort) (err error)

func (*AuthItems) GetAuthItemsCountByType

func (authItems *AuthItems) GetAuthItemsCountByType(selected Selected) (count int, err error)


type Casbin

type Casbin struct {
	// contains filtered or unexported fields

Casbin 自定义权限管理模块

func NewCasbin

func NewCasbin(openRouter []string, dataSourceName string) *Casbin

NewCasbin 初始化权限规则中间件

func (*Casbin) AddAuthItemChild

func (p *Casbin) AddAuthItemChild(c *assist.Context) (err error)

UpdateAuthItemChild 新增一个路由和角色对照关系

func (*Casbin) AddAuthItemChilds

func (p *Casbin) AddAuthItemChilds(c *assist.Context) (err error)


func (*Casbin) DelAuthItemChild

func (p *Casbin) DelAuthItemChild(c *assist.Context) (err error)

DelAuthItemChild 删除一个路由和角色对照关系

func (*Casbin) GetCasbinMenus

func (p *Casbin) GetCasbinMenus() (casbinMenus Menus, err error)

func (*Casbin) GetCasbinMenus2Handler

func (p *Casbin) GetCasbinMenus2Handler(c *assist.Context) (err error)

GetCasbinMenusHandler 获得有权限控制的菜单

func (*Casbin) GetCasbinMenusHandler

func (p *Casbin) GetCasbinMenusHandler(c *assist.Context) (err error)

func (*Casbin) ServeHTTP

func (p *Casbin) ServeHTTP() echo.MiddlewareFunc

ServeHTTP 路由控制中间间主体函数

type CfgValue

type CfgValue struct {
	Url       string `json:"Url"`
	Icon      string `json:"Icon"`
	Name      string `json:"name"`
	Component string `json:"component"`

type CreateAuthItem

type CreateAuthItem struct {
	Name        string `gorm:"size:64"`
	Type        int
	Description string `gorm:"size:256"`
	RouterName  string `gorm:"size:256"` // 路由名称
	RouterType  int    // 服务还是页面 页面是1 服务是2
	ModelName   string // 模块名称
	BusName     string // 业务名称

type DelAuthItem

type DelAuthItem struct {
	Name string `gorm:"size:64"`
	Type int

type DelSystemConfig

type DelSystemConfig struct {
	ID int

type EditSelected

type EditSelected struct {
	Type int    `json:"Type"`
	Name string `gorm:"size:64"`
type Menu struct {
	Url     string `json:"Url"`
	Comment string `json:"Comment"`
	Icon    string `json:"Icon"`
	//Type      string    `json:"Type"`
	//Spec      string    `json:"Spec"`
	Order     int    `json:"Order"`
	Name      string `json:"Name"`
	ParentID  int
	Component string    `json:"Component"`
	SubMenu   MenuSlice `json:"Menu"`
func (p *Menu) GetCfgValue(j string) (Cfg CfgValue)
func (p *Menu) GetMenus() (err error)
type MenuSlice []Menu
func (a MenuSlice) Len() int
func (a MenuSlice) Less(i, j int) bool
func (a MenuSlice) Swap(i, j int)
type Menus []Menu
func (p *Menus) GetCfgValue(j string) (Cfg CfgValue)
func (p *Menus) GetMenus() (err error)
func (a Menus) Len() int
func (a Menus) Less(i, j int) bool
func (a Menus) Swap(i, j int)

type QueryUser

type QueryUser struct {
	ID              int `gorm:"column:id" `
	Status          int // 初始状态
	CreatedAt       string
	Phone           string
	CompanyID       int `gorm:"-"` // 公司编码 saas系统使用
	Username        string
	Password        string
	Email           string
	Nickname        string
	OpenID          string
	AuthAssignments AuthAssignments // 用户对应的角色列表
	HeadImgID       int

type ReqSvcAuthItemChilds

type ReqSvcAuthItemChilds struct {
	Selected RouterSelected `json:"Selected"`

ReqSvcRouters 全路由列表查询业务请求节点

type ReqSvcAuthItems

type ReqSvcAuthItems struct {
	Selected   Selected              `json:"Selected"`
	Sort       Sort                  `json:"Sort"`
	Pagination business.PaginationIn `json:"Pagination"`


type ReqSvcSystemConfigs

type ReqSvcSystemConfigs struct {
	Selected SystemConfigSelected `json:"Selected"`


type ReqSvcUsers

type ReqSvcUsers struct {
	Selected   UserSelected          `json:"Selected"`
	Sort       Sort                  `json:"Sort"`
	Pagination business.PaginationIn `json:"Pagination"`


type ResSvcAuthItemChilds

type ResSvcAuthItemChilds struct {
	RoleName           string         `json:"RoleName"`
	InRoleRoleAuths    []RoleAuthItem `json:"InRoleRoleAuths"`    // 角色对应的角色与角色关系权限组
	InRoleRouterAuths  []RoleAuthItem `json:"InRoleRouterAuths"`  // 角色对应的角色和功能权限关系组
	OutRoleRoleAuths   []RoleAuthItem `json:"OutRoleRoleAuths"`   // 角色没有的角色与角色关系权限组
	OutRoleRouterAuths []RoleAuthItem `json:"OutRoleRouterAuths"` // 角色没有的角色和功能权限关系组

ResSvcAuthItemChilds 权限管理列表查询返回结构 不做分页处理, 返回的是全部项目

func (*ResSvcAuthItemChilds) GetRoleAuthItemsChilds

func (p *ResSvcAuthItemChilds) GetRoleAuthItemsChilds(roleName string) (err error)

GetRoleAuthItemsChilds 获取角色有的 角色没有的 角色对照权限列表查询

type ResSvcAuthItems

type ResSvcAuthItems struct {
	//PageSize int //  一页多少条
	//PrevOffsetCount int // 上一页是第几页
	//OffsetCount     int // 当前是第几页
	//NextOffsetCount int // 下一页是第几页
	AuthItems  AuthItems
	Pagination business.PaginationOut `json:"Pagination"`

ResSvcAuthItems 全路由列表查询业务返回节点

type ResSvcUsers

type ResSvcUsers struct {
	Users      Users
	Pagination business.PaginationOut `json:"Pagination"`

func (*ResSvcUsers) GetUsers

func (p *ResSvcUsers) GetUsers(reqSvc *ReqSvcUsers) (err error)

type Role

type Role struct {
	ID        int
	Name      string
	CreatedAt time.Time


type RoleAuthItem

type RoleAuthItem struct {
	Name        string `gorm:"size:64"`
	Description string `gorm:"size:256"`
	RouterType  int    // 服务还是页面 页面是1 服务是2
	RouterName  string `gorm:"size:256"` // 路由名称
	ModelName   string // 模块名称
	BusName     string // 业务名称

type Roles

type Roles struct {
	Roles   []Role
	RoleMap map[string]int

Roles 角色列表管理

func (*Roles) CheckRole

func (p *Roles) CheckRole(name string) bool

CheckRole 检查是不是角色的成员

func (*Roles) GetAll

func (p *Roles) GetAll()

GetAll 获取全部的角色信息

func (*Roles) GetRoles

func (p *Roles) GetRoles() (err error)

type RouterSelected

type RouterSelected struct {
	RoleName string `gorm:"size:64"`

Selected 查询条件

type Selected

type Selected struct {
	Type       int    `json:"Type"`
	Name       string `gorm:"size:64"`
	RouterType int

Selected 查询条件

type Sort

type Sort struct {
	FieldName string
	Order     string

type SvcAuthItemChilds

type SvcAuthItemChilds struct {
	ResSvc ResSvcAuthItemChilds // 列表 查询返回结果
	ReqSvc ReqSvcAuthItemChilds // 列表查询请求


type SvcAuthItems

type SvcAuthItems struct {
	ReqSvcCreate CreateAuthItem  // 创建请求
	ResSvc       ResSvcAuthItems // 列表分页查询返回结果
	ReqSvc       ReqSvcAuthItems // 列表分页查询请求

func (*SvcAuthItems) GetAuthItemsByType

func (p *SvcAuthItems) GetAuthItemsByType(reqSvc *ReqSvcAuthItems) (resSvc ResSvcAuthItems)

type SvcEditAuthItems

type SvcEditAuthItems struct {
	EditSelected   EditSelected   `json:"Selected"`
	CreateAuthItem CreateAuthItem `json:"AuthItem"`

type SvcEditUser

type SvcEditUser struct {
	UserID     int        `json:"UserID"`
	UserCreate UserCreate `json:"User"`

type SvcUsers

type SvcUsers struct {
	ReqSvc ReqSvcUsers // 列表分页查询请求
	ResSvc ResSvcUsers // 列表分页查询返回结果


type SystemConfig

type SystemConfig struct {
	ID         int
	CfgName    string    // 配置名称
	CfgValue   string    // 配置值
	CfgOrder   int       // 排序
	CfgPid     int       // 父ID
	Ctime      time.Time // 创建时间
	CfgType    string    // 'SYSTEM:系统配置,USER:用户配置,ROUTE:路由,PLUGIN:插件'
	CfgStatus  int       // 1显示 0 不显示
	CfgComment string    // 配置说明

func (*SystemConfig) Create

func (p *SystemConfig) Create() (err error)

func (*SystemConfig) Del

func (p *SystemConfig) Del(id int) (err error)

func (*SystemConfig) Edit

func (p *SystemConfig) Edit() (err error)

type SystemConfigSelected

type SystemConfigSelected struct {
	CfgName string `json:"CfgName"`
	CfgType string `json:"CfgType"`

type SystemConfigs

type SystemConfigs struct {
	SystemConfigs []SystemConfig

func (*SystemConfigs) GetSystemConfigs

func (p *SystemConfigs) GetSystemConfigs(cfgName string, cfgType string) (err error)


type User

type User struct {
	ID              int `gorm:"column:id" `
	RoleID          int
	Status          int // 初始状态
	CreatedAt       time.Time
	Phone           string
	CreatedIP       string
	StaffID         int    `gorm:"-"` // 员工编码
	CompanyID       int    `gorm:"-"` // 公司编码 saas系统使用
	StaffName       string `gorm:"-"`
	Username        string
	Password        string
	Email           string
	Nickname        string
	OpenID          string
	AuthAssignments AuthAssignments // 用户对应的角色列表
	HeadImgID       int
	HeadImage       file.Image `gorm:"-"`

User 保存用户信息的类,存储用户全部的身份信息

var SessionUser *User

func NewUser

func NewUser() *User


func (*User) BindWx

func (p *User) BindWx(wxBindReq *WxBindReq, appID string, secretKey string, mysession session.Session) (err error)

LoginWx 微信绑定

func (*User) Create

func (p *User) Create(user *UserCreate, ip string) (err error)

Create 管理员创建用户 必须创建时就指定对应的角色 用户名 昵称 邮箱 电话号码 角色列表都是必填项目 输入参数UserCreate

func (*User) CreateUserName

func (p *User) CreateUserName()

func (*User) Del

func (p *User) Del(id int) (err error)

func (*User) Edit

func (p *User) Edit(svc *SvcEditUser) (err error)

Edit 管理员编辑用户

func (*User) GetCookie

func (p *User) GetCookie(mysession session.Session) bool

生成cookie (cookie *http.Cookie)

func (*User) GetSession

func (s *User) GetSession() echo.MiddlewareFunc

GetSession 通过cookie中保存的key获取session中的数据 和官方文档的不同,这种写法是在调用具体函数前进行cookie解析 如果在路由验证后调用的话就太迟了

func (*User) Login

func (p *User) Login(user *UserLogin, mysession session.Session) (err error)

LoginIn 使用用户名和密码登录

func (*User) LoginWx

func (p *User) LoginWx(wxLoginReq *WxLoginReq, appID string, secretKey string, mysession session.Session) (err error)

微信登录 已有的用户

func (*User) Logout

func (p *User) Logout(mysession session.Session) (err error)

LoginOut 退出登录

func (*User) QueryByField

func (p *User) QueryByField(fieldName string, fieldValue interface{}) (err error)

QueryByField 根据字段名称和值获取user表和员工表的具体信息

func (*User) QueryByOpenID

func (p *User) QueryByOpenID() (err error)

QueryByOpenID 使用微信的openID查询user信息的方法

func (*User) QueryByUsername

func (p *User) QueryByUsername() (err error)


func (*User) Register

func (p *User) Register(user *UserRegister, ip string) (err error)

Register 用户注册

type UserCreate

type UserCreate struct {
	Username string // 用户名
	Password string // 密码
	Email    string // 邮箱
	Nickname string // 昵称
	Phone    string // 电话号码
	Roles    []Role `json:"Role"` // 角色列表
	Status   int    // 初始状态

type UserLogin

type UserLogin struct {
	Username string // 用户名
	Password string // 密码

UserLogin 用于登录的结构

type UserRegister

type UserRegister struct {
	Username string // 用户名
	Password string // 密码
	Email    string // 邮箱
	Nickname string // 昵称

type UserSelected

type UserSelected struct {
	ID      int    `json:"ID"`
	Status  string `json:"Status" gorm:"size:6"`
	Passkey string `json:"Passkey" gorm:"size:64"`

type UserSystemConfig

type UserSystemConfig struct {
	UserCfgName    string
	UserCfgValue   string
	UserCfgOrder   int
	UserCfgPid     int
	UserCfgComment string
	SubCfgName     string
	SubCfgValue    string
	SubCfgOrder    int
	SubCfgComment  string
	MainComment    string
	UserID         int
	SubID          int
	ParentID       int
	ParentCfgOrder int
	ParentCfgValue string

type Users

type Users []QueryUser

Email string `json:"Email" gorm:"size:64"` Username string `json:"Username" gorm:"size:128"` Phone string `json:"Username" gorm:"size:128"` Nickname string `json:"Username" gorm:"size:128"` Created_at string `json:"Created_at" gorm:"size:128"` Updated_at string `json:"Username" gorm:"size:128"` Password string `json:"Password" gorm:"size:128"` 用户的列表查询

func (*Users) GetUsers

func (p *Users) GetUsers(pageSize int, offsetCount int, selected UserSelected, sort Sort) (count int, err error)


type WeApp

type WeApp struct {
	AppID         string
	Secret        string
	JsCode        string
	CodeToSessURL string
	SessionKey    string
	OpenID        string
	HeaderHost    string // 调用的域名
	Timeout       time.Duration

func (*WeApp) GetData

func (p *WeApp) GetData(url string) (data map[string]interface{}, err error)


func (*WeApp) GetSession

func (p *WeApp) GetSession(appID string, secret string, jsCode string) (err error)

func (*WeApp) OnInit

func (p *WeApp) OnInit(appID string, secret string)

func (*WeApp) SetHeader

func (p *WeApp) SetHeader(reqest *http.Request)


type WxBindReq

type WxBindReq struct {
	Username string // 用户名
	Password string // 密码
	JsCode   string // 邮箱


type WxLoginReq

type WxLoginReq struct {
	JsCode    string `gorm:"size:128"`
	NickName  string
	AvatarUrl string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL