| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | package iiimport (	"golib/features/mo")// User 用户接口// 用户在登录成功后将所有信息(角色/权限)保存在 session 中, 当用户退出登录后需要清除 session// 用户权限发生变更时, 需要终端用户注销后重新登录即可type User struct {	Data mo.M	Item ItemInfo}func (u *User) ID() mo.ObjectID {	oid, err := u.Item.CovertObjectId(u.Data, "_id")	if err != nil {		return mo.NilObjectID	}	return oid}func (u *User) Name() string {	return u.getString("name")}func (u *User) UserName() string {	return u.getString("username")}func (u *User) Flag() bool {	flag, err := u.Item.CovertBoolean(u.Data, "flag")	if err != nil {		return false	}	return flag}func (u *User) IsSysadmin() bool {	isSysadmin, err := u.Item.CovertBoolean(u.Data, "isSysadmin")	if err != nil {		return false	}	return isSysadmin}func (u *User) Company() string {	return u.getString("company_default")}func (u *User) Group(name string) bool {	group, err := u.Item.CovertArray(u.Data, "group")	if err != nil {		return false	}	for _, g := range group {		if g == name {			return true		}	}	return false}func (u *User) Role(group string) (string, bool) {	role, ok := u.Data["role"].(map[string]interface{})	if !ok {		return "", false	}	v, ok := role[group]	if !ok {		return "", false	}	return v.(string), true}func (u *User) Perms(group string) ([]string, bool) {	perms, ok := u.Data["perms"].(map[string]interface{})	if !ok {		return nil, false	}	pm, ok := perms[group].([]interface{})	if !ok {		return nil, false	}	if len(pm) == 0 {		return nil, false	}	ps := make([]string, len(pm))	for i := 0; i < len(pm); i++ {		ps[i] = pm[i].(string)	}	return ps, true}func (u *User) getString(k string) string {	str, err := u.Item.CovertString(u.Data, k)	if err != nil {		return ""	}	return str}func NewUser(itemInfo ItemInfo, data mo.M) User {	return User{Item: itemInfo, Data: data}}
 |