| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package auth
- import(
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
- sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
- sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
- "strconv"
- "time"
- )
- type IAuth interface {
- Init()
- Login(*entitys.CtrlContext)
- Logout(*entitys.CtrlContext)
- }
- var iauthMap map[string]IAuth
- func init(){
- iauthMap = make(map[string]IAuth)
- }
- /**
- * @brief: 注册自定登录对象, 会调用Init进行初始化
- * @param1 t: key
- * @param2 a: 认证对象
- * @return none
- */
- func RegisterAuth(t string, a IAuth){
- if t == "" || a == nil{
- return
- }
- var ok bool
- if _, ok = iauthMap[t]; ok{
- return
- }else{
- a.Init()
- iauthMap[t] = a
- }
- }
- /**
- * @brief: 获取认证对象
- * @param1 t: key
- * @return1 认证对象
- */
- func GetAuth(t string)IAuth{
- var iauth IAuth
- var ok bool
- if iauth, ok = iauthMap[t]; ok{
- return iauth
- }else{
- return nil
- }
- }
- /**
- * @brief: 添加token到全局缓存中
- * @param1 userInfo: 用户信息
- */
- func AddToGlobalTokenStore(userInfo *sysmodel.SysUser)*sysmodel.LoginReturnInfo{
- token := &entitys.Token{}
- timestamp := uint64(time.Now().UnixNano())
- timestamp_str := strconv.FormatUint(timestamp, 10)
- sec_tooken := sysutils.GenerateToken(userInfo.LoginId + timestamp_str)
- if v := sysutils.GetGlobalTokenStore().Get(sec_tooken); v == nil {
- token.AccessToken = sec_tooken
- token.RefreshToken = sec_tooken
- token.LoginID = userInfo.LoginId
- token.UserId = userInfo.Id
- token.Result = 200
- //token.Password = pwd
- token.ServerIp = ""
- token.Domain = userInfo.Domain
- sysutils.GetGlobalTokenStore().Set(sec_tooken, token)
- //sysutils.GetGlobalTokenStore().Set(token.LoginID+user.Domain, token)
- } else {
- token = v
- }
- data := sysmodel.LoginReturnInfo{}
- data.Id = userInfo.Id
- data.LoginId = userInfo.LoginId
- data.Name = userInfo.Name
- data.Mobile = userInfo.Mobile
- data.Email = userInfo.Email
- data.Token = token.AccessToken
- data.Type = userInfo.Type
- data.Domain = userInfo.Domain
- return &data
- }
|