71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package grpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.techease.ru/Smart-search/smart-search-back/pkg/errors"
|
|
pb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/auth"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func (h *AuthHandler) Login(ctx context.Context, req *pb.LoginRequest) (*pb.LoginResponse, error) {
|
|
accessToken, refreshToken, err := h.authService.Login(
|
|
ctx,
|
|
req.Email,
|
|
req.Password,
|
|
req.Ip,
|
|
req.UserAgent,
|
|
)
|
|
if err != nil {
|
|
return nil, errors.ToGRPCError(err, h.logger, "AuthService.Login")
|
|
}
|
|
|
|
return &pb.LoginResponse{
|
|
AccessToken: accessToken,
|
|
RefreshToken: refreshToken,
|
|
}, nil
|
|
}
|
|
|
|
func (h *AuthHandler) Refresh(ctx context.Context, req *pb.RefreshRequest) (*pb.RefreshResponse, error) {
|
|
accessToken, err := h.authService.Refresh(ctx, req.RefreshToken)
|
|
if err != nil {
|
|
return nil, errors.ToGRPCError(err, h.logger, "AuthService.Refresh")
|
|
}
|
|
|
|
return &pb.RefreshResponse{
|
|
AccessToken: accessToken,
|
|
RefreshToken: req.RefreshToken,
|
|
}, nil
|
|
}
|
|
|
|
func (h *AuthHandler) Validate(ctx context.Context, req *pb.ValidateRequest) (*pb.ValidateResponse, error) {
|
|
userID, err := h.authService.Validate(ctx, req.AccessToken)
|
|
if err != nil {
|
|
h.logger.Warn("Token validation failed",
|
|
zap.String("method", "AuthService.Validate"),
|
|
zap.Error(err),
|
|
)
|
|
return &pb.ValidateResponse{
|
|
Valid: false,
|
|
UserId: 0,
|
|
}, nil
|
|
}
|
|
|
|
return &pb.ValidateResponse{
|
|
Valid: true,
|
|
UserId: int64(userID),
|
|
}, nil
|
|
}
|
|
|
|
func (h *AuthHandler) Logout(ctx context.Context, req *pb.LogoutRequest) (*pb.LogoutResponse, error) {
|
|
err := h.authService.Logout(ctx, req.AccessToken)
|
|
if err != nil {
|
|
return nil, errors.ToGRPCError(err, h.logger, "AuthService.Logout")
|
|
}
|
|
|
|
return &pb.LogoutResponse{
|
|
Success: true,
|
|
}, nil
|
|
}
|