123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /*
- * @description:登陆相关数据操作
- * @Author: CP
- * @Date: 2020-09-02 09:56:28
- * @FilePath: \construction_management\services\backstage_service.go
- */
- package services
- import (
- "errors"
- "log"
- "net/http"
- "net/url"
- "github.com/kataras/iris/v12"
- "go.mod/comm"
- "go.mod/conf"
- "go.mod/lib"
- "go.mod/web/viewmodels"
- )
- //定义项目用户Service接口
- type BackstageService interface {
- ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error)
- ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error)
- Out(ctx iris.Context) error
- }
- //返回service操作类
- type backstageService struct {
- // projectAccountDao *dao.ProjectAccountDao
- // projectDao *dao.ProjectDao
- }
- //创建项目用户service
- func NewBackstageService() BackstageService {
- return &backstageService{
- // projectAccountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
- // projectDao: dao.NewProjectDao(datasource.InstanceDbMaster()),
- }
- }
- // 登陆验证
- func (s *backstageService) ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error) {
- loginVaild := viewmodels.StaffCld{}
- err := ctx.ReadJSON(&loginVaild)
- if err != nil {
- log.Println("ReadForm转换异常, error=", err)
- return loginVaild, err
- }
- err = loginVaild.ValidateLogin()
- if err != nil {
- log.Println("登录验证, error=", err)
- return loginVaild, err
- }
- return loginVaild, nil
- }
- // 验证项目用户登陆相关
- func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error) {
- // 1.验证CLD账号密码
- cld := lib.NewCld()
- result, err := cld.LoginValid(loginData)
- if err != nil {
- return nil, err
- }
- if result.Code != 0 {
- return nil, errors.New(result.Msg)
- }
- // 2.写入登录态
- // 加密用户标识
- identity, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret)
- if err != nil {
- return nil, err
- }
- // 加密项目标识
- category, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret)
- if err != nil {
- return nil, err
- }
- digitalToken := comm.CreateSign(conf.CookieSecret + identity)
- // 设置cookie
- maxAge := 60 * 60 * 24 * 7
- params := url.Values{}
- params.Add("identity", identity)
- params.Add("attachedIdentity", category)
- params.Add("digitalToken", digitalToken)
- c := &http.Cookie{
- Name: "cmBackstage",
- Value: params.Encode(),
- Path: "/",
- MaxAge: maxAge,
- HttpOnly: true,
- }
- http.SetCookie(writer, c)
- return &result.Data, nil
- }
- // 登出
- func (s *backstageService) Out(ctx iris.Context) error {
- // 移除cookie
- ctx.RemoveCookie("cmBackstage")
- return nil
- }
|