You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
989 B
44 lines
989 B
package service |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/library/log" |
|
"go-common/library/net/http/blademaster/middleware/permit" |
|
) |
|
|
|
const ( |
|
_sessUnKey = "username" |
|
_sessUIDKey = "uid" |
|
) |
|
|
|
// Login . |
|
func (s *Service) Login(ctx context.Context, mngsid, dsbsid string) (sid, uname string, err error) { |
|
si := s.session(ctx, mngsid) |
|
var username string |
|
if si.Get(_sessUnKey) == nil { |
|
if username, err = s.dao.VerifyDsb(ctx, dsbsid); err != nil { |
|
log.Error("s.dao.VerifyDsb error(%v)", err) |
|
return |
|
} |
|
si.Set(_sessUnKey, username) |
|
si.Set(_sessUIDKey, s.userIds[username]) |
|
if err = s.dao.SetSession(ctx, si); err != nil { |
|
log.Error("s.dao.SetSession(%v) error(%v)", si, err) |
|
err = nil |
|
} |
|
} else { |
|
username = si.Get(_sessUnKey).(string) |
|
} |
|
sid = si.Sid |
|
uname = username |
|
return |
|
} |
|
|
|
// session . |
|
func (s *Service) session(ctx context.Context, sid string) (res *permit.Session) { |
|
if res, _ = s.dao.Session(ctx, sid); res == nil { |
|
res = s.dao.NewSession(ctx) |
|
} |
|
return |
|
}
|
|
|