From bcb4dbf9f348c0c93787b27200de7bf8adbe18d2 Mon Sep 17 00:00:00 2001 From: "LinskRuis.32" Date: Fri, 20 Mar 2020 10:59:11 +0800 Subject: [PATCH] users+ --- cloud/sysCloud/comm.go | 3 +-- cloud/sysCloud/user.go | 35 +++++++++++++++++++++++--- core/bean/sysLogin.go | 9 +++++++ go.mod | 4 +-- go.sum | 4 +++ service/userService/role.go | 3 ++- service/userService/user.go | 16 ------------ webs/sys/controller/user.go | 50 ++++++++++++++++++++++++++++++++++--- 8 files changed, 95 insertions(+), 29 deletions(-) create mode 100644 core/bean/sysLogin.go diff --git a/cloud/sysCloud/comm.go b/cloud/sysCloud/comm.go index 47ce0bc..644e5d8 100644 --- a/cloud/sysCloud/comm.go +++ b/cloud/sysCloud/comm.go @@ -2,7 +2,6 @@ package sysCloud import ( "GoClouds/cloud" - "GoClouds/service/userService" ruisUtil "github.com/mgr9525/go-ruisutil" "gopkg.in/macaron.v1" ) @@ -60,7 +59,7 @@ func CheckUPermission(perm string, c *macaron.Context) (rb bool) { defer ruisUtil.Recovers("CheckUPermmsion", func(errs string) { rb = false }) - lguser := userService.GetCurrentUser(c) + lguser := CurrUser(c) if lguser == nil { return false } diff --git a/cloud/sysCloud/user.go b/cloud/sysCloud/user.go index 6645abd..4f863c1 100644 --- a/cloud/sysCloud/user.go +++ b/cloud/sysCloud/user.go @@ -2,17 +2,44 @@ package sysCloud import ( "GoClouds/cloud" + "GoClouds/core/bean" + "GoClouds/models" + gocloud "github.com/mgr9525/go-cloud" ruisUtil "github.com/mgr9525/go-ruisutil" + "gopkg.in/macaron.v1" ) -func Login(name, pass string) (int, string) { +func Login(name, pass string) (*bean.SysLogin, error) { + ret := &bean.SysLogin{} pars := ruisUtil.NewMap() pars.Set("name", name) pars.Set("pass", pass) - code, uid, err := cloud.SysCloudExec.ExecJSON("/user/login", pars) + err := cloud.SysCloudExec.ExecObjJSON("/user/login", pars, ret) if err != nil { - return 0, "网络错误" + return nil, err } - return code, uid + return ret, nil +} + +func FindUser(id string) *models.SysUser { + e := &models.SysUser{} + pars := ruisUtil.NewMap() + pars.Set("id", id) + err := cloud.SysCloudExec.ExecObjJSON("/user/info", pars, e) + if err != nil { + return nil + } + return e +} +func CurrUser(c *macaron.Context) *models.SysUser { + tkm := gocloud.GetToken(c) + if tkm == nil { + return nil + } + id, ok := (*tkm)["id"].(string) + if !ok || len(id) <= 0 { + return nil + } + return FindUser(id) } diff --git a/core/bean/sysLogin.go b/core/bean/sysLogin.go new file mode 100644 index 0000000..911cac8 --- /dev/null +++ b/core/bean/sysLogin.go @@ -0,0 +1,9 @@ +package bean + +type SysLogin struct { + Stat int + Uid int64 + Xid string + Name string + Errs string +} diff --git a/go.mod b/go.mod index 9b595e9..419ba62 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,8 @@ require ( github.com/donnie4w/go-logger v0.0.0-20170827050443-4740c51383f4 github.com/go-macaron/cache v0.0.0-20190810181446-10f7c57e2196 github.com/go-sql-driver/mysql v1.4.1 - github.com/mgr9525/go-cloud v1.0.6-0.20191115021000-e912b446b8a9 - github.com/mgr9525/go-ruisutil v1.0.8-0.20191105071958-41a4e7d87b4f + github.com/mgr9525/go-cloud v1.0.6-0.20200223053750-a28de55e43ad + github.com/mgr9525/go-ruisutil v1.0.8-0.20200121153146-d276c7bde649 github.com/xormplus/builder v0.0.0-20190724032102-0ee351fedce9 github.com/xormplus/xorm v0.0.0-20190926190243-42377f593eb1 gopkg.in/macaron.v1 v1.3.4 diff --git a/go.sum b/go.sum index d2e1b7f..9d4386b 100644 --- a/go.sum +++ b/go.sum @@ -108,8 +108,12 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mgr9525/go-cloud v1.0.6-0.20191115021000-e912b446b8a9 h1:B5IIZcHuFAO3m+0fd8v1fbgd4KxRfgtzsCSkdHPdijs= github.com/mgr9525/go-cloud v1.0.6-0.20191115021000-e912b446b8a9/go.mod h1:Wc25es8QefcN6HXFUroKShVuzvfjjkkaZDNVAc5q2sA= +github.com/mgr9525/go-cloud v1.0.6-0.20200223053750-a28de55e43ad h1:lYXlkhs/rgnMFXF2N0yY90tIgWH0vtD52RBAF3l3rD8= +github.com/mgr9525/go-cloud v1.0.6-0.20200223053750-a28de55e43ad/go.mod h1:Wc25es8QefcN6HXFUroKShVuzvfjjkkaZDNVAc5q2sA= github.com/mgr9525/go-ruisutil v1.0.8-0.20191105071958-41a4e7d87b4f h1:OkBmLGM6QfRasXO2qR46H4rvIcDb6sfowY5mS0rePM4= github.com/mgr9525/go-ruisutil v1.0.8-0.20191105071958-41a4e7d87b4f/go.mod h1:qXUWVKpHdwoxR0KERCkvL1JH2DETY6b5TMG9t6g9Pls= +github.com/mgr9525/go-ruisutil v1.0.8-0.20200121153146-d276c7bde649 h1:cmIrpn9w25Mhyw+cMg35PnkzyAPbPN1LA0QTKS8P93E= +github.com/mgr9525/go-ruisutil v1.0.8-0.20200121153146-d276c7bde649/go.mod h1:qXUWVKpHdwoxR0KERCkvL1JH2DETY6b5TMG9t6g9Pls= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= diff --git a/service/userService/role.go b/service/userService/role.go index b0a9982..9bf5662 100644 --- a/service/userService/role.go +++ b/service/userService/role.go @@ -1,6 +1,7 @@ package userService import ( + "GoClouds/cloud/sysCloud" "GoClouds/core/comm" "GoClouds/models" "GoClouds/modeluis" @@ -216,7 +217,7 @@ func CheckUPermission(perm string, c *macaron.Context, ch cache.Cache) (rb bool) defer ruisUtil.Recovers("CheckUPermmsion", func(errs string) { rb = false }) - lguser := GetCurrentUser(c) + lguser := sysCloud.CurrUser(c) if lguser == nil { return false } diff --git a/service/userService/user.go b/service/userService/user.go index 85f5c49..41f6fa4 100644 --- a/service/userService/user.go +++ b/service/userService/user.go @@ -4,9 +4,6 @@ import ( "GoClouds/core/comm" "GoClouds/models" "github.com/donnie4w/go-logger/logger" - gocloud "github.com/mgr9525/go-cloud" - ruisUtil "github.com/mgr9525/go-ruisutil" - "gopkg.in/macaron.v1" ) func FindXid(id string) *models.SysUser { @@ -36,16 +33,3 @@ func FindName(name string) *models.SysUser { } return nil } - -func GetCurrentUser(c *macaron.Context) *models.SysUser { - defer ruisUtil.Recovers("GetCurrentUser", nil) - tkm := gocloud.GetToken(c) - if tkm == nil { - return nil - } - id := (*tkm)["id"].(string) - if len(id) <= 0 { - return nil - } - return FindXid(id) -} diff --git a/webs/sys/controller/user.go b/webs/sys/controller/user.go index f7c55c8..08251d3 100644 --- a/webs/sys/controller/user.go +++ b/webs/sys/controller/user.go @@ -2,11 +2,17 @@ package controller import ( "GoClouds/cloud/sysCloud" + "GoClouds/core/bean" "GoClouds/core/comm" + "GoClouds/models" "GoClouds/service/userService" + "encoding/json" + "fmt" + "github.com/go-macaron/cache" gocloud "github.com/mgr9525/go-cloud" ruisUtil "github.com/mgr9525/go-ruisutil" "gopkg.in/macaron.v1" + "strings" "time" ) @@ -16,12 +22,37 @@ func (e *UserController) GetPath() string { return "/user" } func (e *UserController) Routes() { + gocloud.Web.Any("/info", e.info) gocloud.Web.Any("/login", e.login) } func (e *UserController) Mid() []macaron.Handler { return []macaron.Handler{gocloud.AccessAllowFun} } +func (UserController) info(c *macaron.Context, ch cache.Cache, ctj gocloud.ContJSON) { + id := ctj.GetString("id") + if len(id) <= 0 { + c.PlainText(500, []byte("param err")) + return + } + + e := &models.SysUser{} + key := fmt.Sprintf("uinfo:%s", id) + if ch.Get(key) != nil { + bts := ch.Get(key).([]byte) + err := json.Unmarshal(bts, e) + if err == nil { + c.JSON(200, e) + return + } + } + e = userService.FindXid(id) + bts, err := json.Marshal(e) + if err == nil { + ch.Put(key, bts, 3600*5) + } + c.JSON(200, e) +} func (e *UserController) login(c *macaron.Context, ctj gocloud.ContJSON) { name := ctj.GetString("name") pass := ctj.GetString("pass") @@ -34,13 +65,20 @@ func (e *UserController) login(c *macaron.Context, ctj gocloud.ContJSON) { return } + ret := &bean.SysLogin{} usr := userService.FindName(name) if usr == nil { - c.PlainText(512, []byte("未找到用户")) + ret.Errs = "未找到用户" + c.JSON(200, ret) return } - if usr.Pass != ruisUtil.Md5String(pass) { - c.PlainText(513, []byte("密码错误")) + if len(usr.Xid) <= 0 { + usr.Xid = fmt.Sprintf("%d", usr.Id) + comm.DbSys.Cols("xid").Where("id=?", usr.Id).Update(usr) + } + if usr.Pass != strings.ToUpper(ruisUtil.Md5String(pass)) { + ret.Errs = "密码错误" + c.JSON(200, ret) return } if !sysCloud.CheckPermission(usr.Xid, "login") { @@ -51,5 +89,9 @@ func (e *UserController) login(c *macaron.Context, ctj gocloud.ContJSON) { usr.Logintm = time.Now() comm.DbSys.Cols("logintm").Where("xid=?", usr.Xid).Update(usr) - c.PlainText(200, []byte(usr.Xid)) + ret.Stat = 1 + ret.Uid = usr.Id + ret.Xid = usr.Xid + ret.Name = usr.Name + c.JSON(200, ret) }