...
|
...
|
@@ -6,7 +6,6 @@ import ( |
|
|
"fmt"
|
|
|
"html/template"
|
|
|
"math/rand"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
...
|
...
|
@@ -52,12 +51,12 @@ var ( |
|
|
//登录
|
|
|
func (s *AuthService) Login(request *protocol.LoginRequest) (rsp *protocol.LoginResponse, err error) {
|
|
|
var (
|
|
|
user *models.Users
|
|
|
userInfo *models.UserInfo
|
|
|
user *models.User
|
|
|
userAuth *models.UserAuth
|
|
|
result bool
|
|
|
checkImResponse *protocol.CheckImResponse
|
|
|
)
|
|
|
user, err = repository.UserRepositoryFactory().GetUsersByMobile(request.Phone)
|
|
|
user, err = repository.User.GetUsersByMobile(request.Phone)
|
|
|
if err != nil {
|
|
|
log.Error(err)
|
|
|
err = protocol.NewErrWithMessage(2020, err) //账号不存在
|
...
|
...
|
@@ -65,7 +64,7 @@ func (s *AuthService) Login(request *protocol.LoginRequest) (rsp *protocol.Login |
|
|
}
|
|
|
switch request.GrantType {
|
|
|
case protocol.LoginTypePassPord:
|
|
|
if strings.Compare(user.Password, request.PassWord) == 0 {
|
|
|
if strings.Compare(user.Passwd, request.PassWord) == 0 {
|
|
|
goto Success
|
|
|
} else {
|
|
|
err = protocol.NewErrWithMessage(2021, err) //登录密码错误
|
...
|
...
|
@@ -84,108 +83,43 @@ func (s *AuthService) Login(request *protocol.LoginRequest) (rsp *protocol.Login |
|
|
}
|
|
|
Success:
|
|
|
{
|
|
|
userInfo, err = repository.UserRepositoryFactory().GetUserInfoByMobile(request.Phone)
|
|
|
user, err = repository.User.GetUsersByMobile(request.Phone)
|
|
|
if err != nil {
|
|
|
log.Error(err)
|
|
|
return
|
|
|
}
|
|
|
if userInfo.Auth == "" {
|
|
|
userInfo.Auth = uid.NewV1().StringNoDash()
|
|
|
userAuth, err = repository.UserAuth.GetUserAuthByUserId(user.Id)
|
|
|
if err != nil {
|
|
|
log.Error(err)
|
|
|
return
|
|
|
}
|
|
|
if userAuth.AuthCode == "" {
|
|
|
userAuth.AuthCode = uid.NewV1().StringNoDash()
|
|
|
}
|
|
|
if checkImResponse, err = CheckIm(&protocol.CheckImRequest{
|
|
|
Uid: fmt.Sprintf("%v", userInfo.Id),
|
|
|
Uname: userInfo.Uname,
|
|
|
Icon: userInfo.Icon,
|
|
|
IsCreated: userInfo.ImToken != "",
|
|
|
Uid: fmt.Sprintf("%v", user.Id),
|
|
|
Uname: user.NickName,
|
|
|
Icon: user.Icon,
|
|
|
IsCreated: user.ImToken != "",
|
|
|
}); err != nil {
|
|
|
return
|
|
|
}
|
|
|
if checkImResponse != nil && checkImResponse.ImToken != "" {
|
|
|
userInfo.ImToken = checkImResponse.ImToken
|
|
|
user.ImToken = checkImResponse.ImToken
|
|
|
}
|
|
|
if userInfo.CsAccount == 0 {
|
|
|
userInfo.CsAccount = imGetRandomCSAccount()
|
|
|
if user.CsAccount == 0 {
|
|
|
user.CsAccount = imGetRandomCSAccount()
|
|
|
}
|
|
|
userInfo.AuthExp = time.Now().Add(time.Second * protocol.TokenExpire)
|
|
|
if err = repository.UserRepositoryFactory().UpdateUserInfoById(userInfo); err != nil {
|
|
|
userAuth.AccessTokenExp = time.Now().Add(time.Second * protocol.TokenExpire)
|
|
|
if err = repository.UserAuth.UpdateUserAuthById(userAuth); err != nil {
|
|
|
return
|
|
|
}
|
|
|
rsp = &protocol.LoginResponse{AuthCode: userInfo.Auth}
|
|
|
rsp = &protocol.LoginResponse{AuthCode: userAuth.AuthCode}
|
|
|
return
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
|
|
|
func (s *AuthService) Login1(request *protocol.LoginRequest) (rsp *protocol.LoginResponse, err error) {
|
|
|
var logintype ILoginAuth
|
|
|
switch request.GrantType {
|
|
|
case protocol.LoginTypePassPord:
|
|
|
logintype = NewLoginByPassword(request.Phone, request.PassWord)
|
|
|
case protocol.LoginTypeSmdcode:
|
|
|
logintype = NewLoginBySms(request.Phone, request.Code)
|
|
|
default:
|
|
|
err = fmt.Errorf("grantType error:%s", request.GrantType)
|
|
|
return
|
|
|
}
|
|
|
var useridentity *UserIdentity
|
|
|
useridentity, err = logintype.LoginAuth()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
rsp = &protocol.LoginResponse{
|
|
|
AuthCode: useridentity.Auth,
|
|
|
}
|
|
|
if len(useridentity.Auth) == 0 {
|
|
|
useridentity.Auth = uid.NewV1().StringNoDash()
|
|
|
}
|
|
|
if len(useridentity.Imtoken) == 0 {
|
|
|
//usercreate 最多重试俩次
|
|
|
for i := 0; i < 2; i++ {
|
|
|
v := s_im.UserCreate{
|
|
|
Accid: fmt.Sprintf("%s", useridentity.Uid),
|
|
|
Name: useridentity.Uname,
|
|
|
Icon: useridentity.Icon,
|
|
|
}
|
|
|
tokenInfo, err := s_im.ParseUserCreate(v)
|
|
|
if err != nil {
|
|
|
log.Error("s_im.ParseUserCreate err:", err)
|
|
|
}
|
|
|
if err == nil {
|
|
|
if tokenInfo.Code == 200 {
|
|
|
useridentity.Imtoken = tokenInfo.Info.Token
|
|
|
// 跳出
|
|
|
break
|
|
|
} else {
|
|
|
log.Error("s_im.ParseUserCreate response code:", tokenInfo.Code)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
//userupdateunifo
|
|
|
for i := 0; i < 2; i++ {
|
|
|
v := s_im.UserUpdateUinfo{
|
|
|
Accid: fmt.Sprintf("%s", useridentity.Accid),
|
|
|
Name: useridentity.Uname,
|
|
|
Icon: useridentity.Icon,
|
|
|
}
|
|
|
imRsp, err := s_im.ParseUserUpdateUinfo(v)
|
|
|
if err != nil {
|
|
|
log.Error("s_im.ParseUserUpdateUinfo err:", err)
|
|
|
}
|
|
|
if err == nil {
|
|
|
if imRsp.Code == 200 {
|
|
|
break
|
|
|
} else {
|
|
|
log.Error("s_im.ParseUserUpdateUinfo response code:", imRsp.Code)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
//更新设备信息
|
|
|
func (s *AuthService) UpdateDevice(request *protocol.UpdateDeviceRequest) (rsp *protocol.UpdateDeviceResponse, err error) {
|
|
|
return nil, nil
|
...
|
...
|
@@ -194,28 +128,28 @@ func (s *AuthService) UpdateDevice(request *protocol.UpdateDeviceRequest) (rsp * |
|
|
//获取accessToken
|
|
|
func (s *AuthService) AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessTokenResponse, err error) {
|
|
|
var (
|
|
|
userInfo *models.UserInfo
|
|
|
userAuth *models.UserAuth
|
|
|
)
|
|
|
_, err = repository.ConfigRepositoryFactory().GetCfgClient(request.ClientId, request.ClientSecret)
|
|
|
if err != nil {
|
|
|
err = protocol.NewErrWithMessage(101, err)
|
|
|
return
|
|
|
}
|
|
|
userInfo, err = repository.UserRepositoryFactory().GetUserInfoByAuthCode(request.AuthCode)
|
|
|
//_, err = repository.ConfigRepositoryFactory().GetCfgClient(request.ClientId, request.ClientSecret)
|
|
|
//if err != nil {
|
|
|
// err = protocol.NewErrWithMessage(101, err)
|
|
|
// return
|
|
|
//}
|
|
|
userAuth, err = repository.UserAuth.GetUserAuthByAuthCode(request.AuthCode)
|
|
|
if err != nil {
|
|
|
err = protocol.NewErrWithMessage(4139, err)
|
|
|
return
|
|
|
}
|
|
|
userInfo.AccessToken = uid.NewV1().StringNoDash()
|
|
|
userInfo.RefreshToken = uid.NewV1().StringNoDash()
|
|
|
if err = repository.UserRepositoryFactory().UpdateUserInfoById(userInfo); err != nil {
|
|
|
userAuth.AccessToken = uid.NewV1().StringNoDash()
|
|
|
userAuth.RefreshToken = uid.NewV1().StringNoDash()
|
|
|
if err = repository.UserAuth.UpdateUserAuthById(userAuth); err != nil {
|
|
|
log.Error(err)
|
|
|
return
|
|
|
}
|
|
|
//valid token
|
|
|
rsp = &protocol.AccessTokenResponse{
|
|
|
RefreshToken: userInfo.RefreshToken,
|
|
|
AccessToken: userInfo.AccessToken,
|
|
|
RefreshToken: userAuth.RefreshToken,
|
|
|
AccessToken: userAuth.AccessToken,
|
|
|
ExpiresIn: protocol.TokenExpire,
|
|
|
}
|
|
|
return
|
...
|
...
|
@@ -224,25 +158,25 @@ func (s *AuthService) AccessToken(request *protocol.AccessTokenRequest) (rsp *pr |
|
|
//刷新token
|
|
|
func (s *AuthService) RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshTokenResponse, err error) {
|
|
|
var (
|
|
|
userInfo *models.UserInfo
|
|
|
userAuth *models.UserAuth
|
|
|
)
|
|
|
_, err = repository.ConfigRepositoryFactory().GetCfgClient(request.ClientId, request.ClientSecret)
|
|
|
if err != nil {
|
|
|
protocol.NewErrWithMessage(101, err)
|
|
|
return
|
|
|
}
|
|
|
userInfo, err = repository.UserRepositoryFactory().GetUserInfoByRefreshToken(request.RefreshToken)
|
|
|
//_, err = repository.ConfigRepositoryFactory().GetCfgClient(request.ClientId, request.ClientSecret)
|
|
|
//if err != nil {
|
|
|
// protocol.NewErrWithMessage(101, err)
|
|
|
// return
|
|
|
//}
|
|
|
userAuth, err = repository.UserAuth.GetUserAuthByRefreshToken(request.RefreshToken)
|
|
|
if err != nil {
|
|
|
protocol.NewErrWithMessage(4139, err)
|
|
|
return
|
|
|
}
|
|
|
userInfo.AccessToken = uid.NewV1().StringNoDash()
|
|
|
if err = repository.UserRepositoryFactory().UpdateUserInfoById(userInfo); err != nil {
|
|
|
userAuth.AccessToken = uid.NewV1().StringNoDash()
|
|
|
if err = repository.UserAuth.UpdateUserAuthById(userAuth); err != nil {
|
|
|
return
|
|
|
}
|
|
|
rsp = &protocol.RefreshTokenResponse{
|
|
|
AccessToken: userInfo.AccessToken,
|
|
|
RefreshToken: userInfo.RefreshToken,
|
|
|
AccessToken: userAuth.AccessToken,
|
|
|
RefreshToken: userAuth.RefreshToken,
|
|
|
ExpiresIn: protocol.TokenExpire,
|
|
|
}
|
|
|
return
|
...
|
...
|
@@ -259,19 +193,19 @@ func (s *AuthService) RefreshToken(request *protocol.RefreshTokenRequest) (rsp * |
|
|
//检查token有效性
|
|
|
func (s *AuthService) CheckToken(request *protocol.CheckTokenRequest) (rsp *protocol.CheckTokenResponse, err error) {
|
|
|
var (
|
|
|
userInfo *models.UserInfo
|
|
|
userAuth *models.UserAuth
|
|
|
)
|
|
|
if len(request.Token) == 0 {
|
|
|
err = common.NewErrorWithMsg(4141, "token not empty")
|
|
|
return
|
|
|
}
|
|
|
userInfo, err = models.GetUserInfoByToken(request.Token)
|
|
|
userAuth, err = repository.UserAuth.GetUserAuthByToken(request.Token)
|
|
|
if err != nil {
|
|
|
err = protocol.NewErrWithMessage(4141, err)
|
|
|
return
|
|
|
}
|
|
|
rsp = &protocol.CheckTokenResponse{
|
|
|
UserInfo: userInfo,
|
|
|
UserInfo: userAuth,
|
|
|
IsValid: true,
|
|
|
}
|
|
|
return
|
...
|
...
|
@@ -279,18 +213,18 @@ func (s *AuthService) CheckToken(request *protocol.CheckTokenRequest) (rsp *prot |
|
|
|
|
|
//检查uuid 是否重复
|
|
|
func (s *AuthService) CheckUuid(request *protocol.CheckUuidRequest) (rsp *protocol.CheckUuidResponse, err error) {
|
|
|
var (
|
|
|
logUuid *models.LogUuid
|
|
|
)
|
|
|
if len(request.Uuid) == 0 {
|
|
|
err = common.NewErrorWithMsg(4142, "uuid not empty")
|
|
|
}
|
|
|
logUuid, err = models.GetLogUuidByUuid(request.Uuid)
|
|
|
if err == nil && logUuid != nil {
|
|
|
err = common.NewErrorWithMsg(4142, "uuid not valid")
|
|
|
}
|
|
|
models.AddLogUuid(&models.LogUuid{Uuid: request.Uuid})
|
|
|
rsp = &protocol.CheckUuidResponse{}
|
|
|
//var (
|
|
|
// logUuid *models.LogUuid
|
|
|
//)
|
|
|
//if len(request.Uuid) == 0 {
|
|
|
// err = common.NewErrorWithMsg(4142, "uuid not empty")
|
|
|
//}
|
|
|
//logUuid, err = models.GetLogUuidByUuid(request.Uuid)
|
|
|
//if err == nil && logUuid != nil {
|
|
|
// err = common.NewErrorWithMsg(4142, "uuid not valid")
|
|
|
//}
|
|
|
//models.AddLogUuid(&models.LogUuid{Uuid: request.Uuid})
|
|
|
//rsp = &protocol.CheckUuidResponse{}
|
|
|
return
|
|
|
}
|
|
|
|
...
|
...
|
@@ -502,9 +436,6 @@ func imGetRandomCSAccount() (acid int64) { |
|
|
return
|
|
|
}
|
|
|
index := rand.Intn(len(kefus))
|
|
|
acid, err = strconv.ParseInt(kefus[index].Accid, 10, 64)
|
|
|
if err != nil {
|
|
|
log.Error(err)
|
|
|
}
|
|
|
acid = kefus[index].Id //Accid
|
|
|
return acid
|
|
|
} |
...
|
...
|
|