Browse Source

users+

master
LinskRuis.32 5 years ago
parent
commit
bcb4dbf9f3
  1. 3
      cloud/sysCloud/comm.go
  2. 35
      cloud/sysCloud/user.go
  3. 9
      core/bean/sysLogin.go
  4. 4
      go.mod
  5. 4
      go.sum
  6. 3
      service/userService/role.go
  7. 16
      service/userService/user.go
  8. 50
      webs/sys/controller/user.go

3
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
}

35
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)
}

9
core/bean/sysLogin.go

@ -0,0 +1,9 @@
package bean
type SysLogin struct {
Stat int
Uid int64
Xid string
Name string
Errs string
}

4
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

4
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=

3
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
}

16
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)
}

50
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)
}
Loading…
Cancel
Save