123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package main
- import (
- "net/http"
- "sparrow/pkg/models"
- "sparrow/pkg/rpcs"
- "sparrow/pkg/server"
- "time"
- jwt "github.com/dgrijalva/jwt-go"
- "github.com/martini-contrib/render"
- )
- // SignedString 签名
- const SignedString = "www.yehaoji.com"
- // UserToken 用户token结构体
- type UserToken struct {
- UserID uint
- UserName string
- UserType string
- RoleCode int
- VendorID uint
- jwt.StandardClaims
- }
- // UserLogin 用户登陆
- func UserLogin(loginRequest models.LoginRequest, r render.Render) {
- reply := models.User{}
- err := server.RPCCallByName("registry", "Registry.Login", &loginRequest, &reply)
- if err != nil {
- r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
- return
- }
- usertype := "member"
- if reply.UserType == 1 {
- usertype = "admin"
- }
- claims := UserToken{
- UserID: reply.ID,
- UserName: reply.UserName,
- UserType: usertype,
- RoleCode: reply.UserRoleID,
- VendorID: reply.VendorID,
- }
- claims.ExpiresAt = time.Now().Add(time.Hour * 24).Unix()
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- ser, _ := token.SignedString([]byte(SignedString))
- result := map[string]interface{}{
- "username": reply.UserName,
- "userkey": reply.UserKey,
- "company": reply.Vendor.VendorName,
- "access_token": ser,
- }
- r.JSON(http.StatusOK, result)
- return
- }
- // UserRegister 用户注册
- func UserRegister(req models.Reqrequest, r render.Render) {
- vargs := models.Vendor{
- VendorName: req.VendorName,
- }
- vreply := &models.Vendor{}
- err := server.RPCCallByName("registry", "Registry.SaveVendor", &vargs, vreply)
- if err != nil {
- r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
- return
- }
- uargs := &models.User{
- UserName: req.UserName,
- UserPass: req.PassWord,
- VendorID: vreply.ID,
- Phone: req.Phone,
- Email: req.Email,
- }
- ureply := &models.User{}
- err = server.RPCCallByName("registry", "Registry.Register", &uargs, ureply)
- if err != nil {
- r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
- return
- }
- res := map[string]interface{}{
- "username": uargs.UserName,
- "phone": uargs.Phone,
- "email": uargs.Email,
- }
- r.JSON(http.StatusOK, res)
- return
- }
- // ModifyPassword 用户修改密码
- func ModifyPassword(req *http.Request, r render.Render, user *UserToken) {
- newpass := req.URL.Query().Get("newpass")
- oldpass := req.URL.Query().Get("oldpass")
- if len(newpass) == 0 || len(oldpass) == 0 {
- r.JSON(http.StatusOK, renderError(ErrWrongRequestFormat, errBadRequestString))
- return
- }
- args := rpcs.ArgsUserModifyPass{
- UserID: user.UserID,
- NewPass: newpass,
- OldPass: oldpass,
- }
- err := server.RPCCallByName("registry", "Registry.ModifyPass", &args, nil)
- if err != nil {
- r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
- return
- }
- r.JSON(http.StatusOK, done("修改成功"))
- return
- }
|