chore: use connect user

pull/407/head
Zero 2 years ago
parent c49cf5d117
commit 386974c663

@ -5,6 +5,7 @@
package core
import (
connectMidleware "github.com/go-zoox/connect/pkg/middleware"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms"
)
@ -20,6 +21,8 @@ type UserManageService interface {
CreateUser(user *ms.User) (*ms.User, error)
UpdateUser(user *ms.User) error
GetRegisterUserCount() (int64, error)
//
GetOrCreateUserByEmail(email string, connectUser *connectMidleware.User) (*ms.User, error)
}
// ContactManageService 联系人管理服务

@ -18,6 +18,7 @@ type User struct {
*Model
Nickname string `json:"nickname"`
Username string `json:"username"`
Email string `json:"email"`
Phone string `json:"phone"`
Password string `json:"password"`
Salt string `json:"salt"`
@ -59,6 +60,8 @@ func (u *User) Get(db *gorm.DB) (*User, error) {
db = db.Where("id= ? AND is_del = ?", u.Model.ID, 0)
} else if u.Phone != "" {
db = db.Where("phone = ? AND is_del = ?", u.Phone, 0)
} else if u.Email != "" {
db = db.Where("email = ? AND is_del = ?", u.Email, 0)
} else {
db = db.Where("username = ? AND is_del = ?", u.Username, 0)
}

@ -7,7 +7,10 @@ package jinzhu
import (
"fmt"
"strings"
"sync"
connectMidleware "github.com/go-zoox/connect/pkg/middleware"
"github.com/go-zoox/random"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms"
@ -75,6 +78,34 @@ func (s *userManageSrv) GetUserByUsername(username string) (*ms.User, error) {
return user.Get(s.db)
}
var GetOrCreateUserByEmailSync = &sync.Mutex{}
func (s *userManageSrv) GetOrCreateUserByEmail(email string, connectUser *connectMidleware.User) (*ms.User, error) {
GetOrCreateUserByEmailSync.Lock()
defer GetOrCreateUserByEmailSync.Unlock()
user := &dbr.User{
Email: email,
}
u, err := user.Get(s.db)
if err == nil {
return u, nil
}
fmt.Println("[GetOrCreateUserByEmail] connectUser:", connectUser)
user.Nickname = connectUser.Nickname
user.Avatar = connectUser.Avatar
user.Status = ms.UserStatusNormal
// user.OpenID = connectUser.ID
// user.Username = random.String(16)
user.Username = strings.Split(email, "@")[0]
user.Password = random.String(32)
return s.CreateUser(user)
}
func (s *userManageSrv) UserProfileByName(username string) (res *cs.UserProfile, err error) {
err = s.db.Table(_user_).Joins(s._userProfileJoins).
Where(s._userProfileWhere, username).

@ -172,16 +172,19 @@ func (s *looseSrv) tweetCommentsFromCache(req *web.TweetCommentsReq, limit int,
}
func (s *looseSrv) GetUserTweets(req *web.GetUserTweetsReq) (res *web.GetUserTweetsResp, err mir.Error) {
fmt.Println("123123")
user, xerr := s.RelationTypFrom(req.User, req.Username)
if xerr != nil {
return nil, err
}
// 尝试直接从缓存中获取数据
fmt.Println("468888")
key, ok := "", false
if res, key, ok = s.userTweetsFromCache(req, user); ok {
// logrus.Debugf("GetUserTweets from cache key:%s", key)
return
}
fmt.Println("77")
// 缓存获取未成功,只能查库了
switch req.Style {
case web.UserPostsStyleComment, web.UserPostsStyleMedia:

@ -17,6 +17,8 @@ import (
connectMidleware "github.com/go-zoox/connect/pkg/middleware"
"github.com/rocboss/paopao-ce/internal/conf"
"github.com/rocboss/paopao-ce/internal/servants"
"github.com/rocboss/paopao-ce/internal/servants/base"
"github.com/rocboss/paopao-ce/pkg/app"
)
var (
@ -52,9 +54,65 @@ func newWebEngine() *gin.Engine {
e.Use(connectMidleware.CreateGinMiddleware(os.Getenv("SECRET_KEY")))
e.Use(func(ctx *gin.Context) {
v, _ := ctx.Get(connectMidleware.ContextUserKeyForGin)
u, ok := ctx.Get(connectMidleware.ContextUserKeyForGin)
if !ok {
ctx.JSON(http.StatusUnauthorized, gin.H{
"message": "unauthorized (1)",
})
ctx.Abort()
return
}
connectUser, ok := u.(*connectMidleware.User)
if !ok {
ctx.JSON(http.StatusUnauthorized, gin.H{
"message": "unauthorized (2)",
})
ctx.Abort()
return
}
fmt.Println("user:", v)
fmt.Println("connect user:", connectUser)
dao := base.NewDaoServant()
user, err := dao.Ds.GetOrCreateUserByEmail(connectUser.Email, connectUser)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{
"message": fmt.Sprintf("failed to get user by email: %s", err),
})
ctx.Abort()
return
}
// auth login
if ctx.Request.URL.Path == "/v1/auth/login" {
token, err := app.GenerateToken(user)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{
"message": "failed to generate token",
})
ctx.Abort()
return
}
ctx.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"token": token,
},
})
ctx.Abort()
return
} else if ctx.Request.URL.Path == "/v1/user/info" {
// user info
ctx.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": user,
})
ctx.Abort()
return
}
ctx.Next()
})

@ -342,6 +342,7 @@ CREATE TABLE `p_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '昵称',
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
`email` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '邮箱',
`phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'MD5密码',
`salt` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '盐值',

@ -280,6 +280,7 @@ CREATE TABLE p_user (
id BIGINT NOT NULL DEFAULT nextval('user_id_seq'::regclass),
nickname VARCHAR(32) NOT NULL DEFAULT '',
username VARCHAR(32) NOT NULL DEFAULT '',
email VARCHAR(64) NOT NULL DEFAULT '',
phone VARCHAR(16) NOT NULL DEFAULT '', -- 手机号
password VARCHAR(32) NOT NULL DEFAULT '', -- MD5密码
salt VARCHAR(16) NOT NULL DEFAULT '', -- 盐值

@ -290,7 +290,32 @@ onMounted(() => {
store.commit('userLogout');
});
} else {
store.commit('userLogout');
// store.commit('userLogout');
userLogin({
username: "placeholder",
password: "placeholder",
})
.then((res) => {
const token = res?.token || '';
// 写入用户信息
localStorage.setItem('PAOPAO_TOKEN', token);
return userInfo(token);
})
.then((res) => {
// window.$message.success('登录成功');
loading.value = false;
store.commit('updateUserinfo', res);
store.commit('triggerAuth', false);
store.commit('refresh')
loginForm.username = '';
loginForm.password = '';
})
.catch((err) => {
loading.value = false;
});
}
});
</script>

Loading…
Cancel
Save