134 lines
4.3 KiB
Go
134 lines
4.3 KiB
Go
package grpcserver
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/XingfenD/yoresee_doc/internal/dto"
|
|
"github.com/XingfenD/yoresee_doc/internal/service/auth_service"
|
|
"github.com/XingfenD/yoresee_doc/internal/status"
|
|
pb "github.com/XingfenD/yoresee_doc/pkg/gen/yoresee_doc/v1"
|
|
)
|
|
|
|
type AuthServiceServer struct {
|
|
pb.UnimplementedAuthServiceServer
|
|
}
|
|
|
|
func NewAuthServiceServer() *AuthServiceServer {
|
|
return &AuthServiceServer{}
|
|
}
|
|
|
|
func (s *AuthServiceServer) Login(ctx context.Context, req *pb.AuthLoginRequest) (*pb.AuthLoginResponse, error) {
|
|
if req == nil || req.Email == "" || req.Password == "" {
|
|
return &pb.AuthLoginResponse{Base: baseResponseFromStatus(status.StatusParamError)}, nil
|
|
}
|
|
|
|
token, user, err := auth_service.AuthSvc.Login(req.Email, req.Password)
|
|
if err != nil {
|
|
return &pb.AuthLoginResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
|
|
return &pb.AuthLoginResponse{
|
|
Base: baseResponseFromErr(nil),
|
|
Token: token,
|
|
User: toUserResponse(user),
|
|
}, nil
|
|
}
|
|
|
|
func (s *AuthServiceServer) Register(ctx context.Context, req *pb.AuthRegisterRequest) (*pb.AuthRegisterResponse, error) {
|
|
if req == nil || req.Username == "" || req.Password == "" || req.Email == "" {
|
|
return &pb.AuthRegisterResponse{Base: baseResponseFromStatus(status.StatusParamError)}, nil
|
|
}
|
|
|
|
userCreate := &dto.UserCreate{
|
|
Username: req.Username,
|
|
Email: req.Email,
|
|
Password: req.Password,
|
|
}
|
|
if req.InvitationCode != nil {
|
|
userCreate.InvitationCode = req.InvitationCode
|
|
}
|
|
|
|
err := auth_service.AuthSvc.Register(ctx, userCreate)
|
|
if err != nil {
|
|
return &pb.AuthRegisterResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
|
|
return &pb.AuthRegisterResponse{Base: baseResponseFromErr(nil)}, nil
|
|
}
|
|
|
|
func (s *AuthServiceServer) UpdateProfile(ctx context.Context, req *pb.UpdateProfileRequest) (*pb.UpdateProfileResponse, error) {
|
|
if req == nil {
|
|
return &pb.UpdateProfileResponse{Base: baseResponseFromStatus(status.StatusParamError)}, nil
|
|
}
|
|
userExternalID, ok := ctx.Value("user_external_id").(string)
|
|
if !ok || userExternalID == "" {
|
|
return &pb.UpdateProfileResponse{Base: baseResponseFromStatus(status.StatusTokenInvalid)}, nil
|
|
}
|
|
|
|
serviceReq := &dto.UpdateProfileRequest{
|
|
Username: req.Username,
|
|
Email: req.Email,
|
|
Nickname: req.Nickname,
|
|
Password: req.Password,
|
|
AvatarFile: req.AvatarFile,
|
|
AvatarFilename: req.AvatarFilename,
|
|
AvatarContentType: req.AvatarContentType,
|
|
}
|
|
|
|
user, err := auth_service.AuthSvc.UpdateProfile(userExternalID, serviceReq)
|
|
if err != nil {
|
|
return &pb.UpdateProfileResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
|
|
return &pb.UpdateProfileResponse{
|
|
Base: baseResponseFromErr(nil),
|
|
User: toUserResponse(user),
|
|
}, nil
|
|
}
|
|
|
|
func (s *AuthServiceServer) QuerySideBarDisplay(ctx context.Context, req *pb.QuerySideBarDisplayRequest) (*pb.QuerySideBarDisplayResponse, error) {
|
|
if req == nil || req.Scene == "" {
|
|
return &pb.QuerySideBarDisplayResponse{Base: baseResponseFromStatus(status.StatusParamError)}, nil
|
|
}
|
|
userExternalID, ok := ctx.Value("user_external_id").(string)
|
|
if !ok || userExternalID == "" {
|
|
return &pb.QuerySideBarDisplayResponse{Base: baseResponseFromStatus(status.StatusTokenInvalid)}, nil
|
|
}
|
|
|
|
isAdmin, err := auth_service.AuthSvc.IsAdmin(userExternalID)
|
|
if err != nil {
|
|
return &pb.QuerySideBarDisplayResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
|
|
displayTabs, err := auth_service.AuthSvc.QuerySideBarDisplay(req.Scene, isAdmin)
|
|
if err != nil {
|
|
return &pb.QuerySideBarDisplayResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
return &pb.QuerySideBarDisplayResponse{
|
|
Base: baseResponseFromErr(nil),
|
|
DisplayTabs: displayTabs,
|
|
}, nil
|
|
}
|
|
|
|
func (s *AuthServiceServer) QueryTopNavDisplay(ctx context.Context, req *pb.QueryTopNavDisplayRequest) (*pb.QueryTopNavDisplayResponse, error) {
|
|
userExternalID, ok := ctx.Value("user_external_id").(string)
|
|
if !ok || userExternalID == "" {
|
|
return &pb.QueryTopNavDisplayResponse{Base: baseResponseFromStatus(status.StatusTokenInvalid)}, nil
|
|
}
|
|
|
|
isAdmin, err := auth_service.AuthSvc.IsAdmin(userExternalID)
|
|
if err != nil {
|
|
return &pb.QueryTopNavDisplayResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
|
|
menus, err := auth_service.AuthSvc.QueryTopNavDisplay(isAdmin)
|
|
if err != nil {
|
|
return &pb.QueryTopNavDisplayResponse{Base: baseResponseFromErr(err)}, nil
|
|
}
|
|
|
|
return &pb.QueryTopNavDisplayResponse{
|
|
Base: baseResponseFromErr(nil),
|
|
DisplayMenus: menus,
|
|
}, nil
|
|
}
|