ms-auth/internal/transport/server.go

94 lines
2 KiB
Go
Raw Normal View History

2024-07-14 21:26:34 +00:00
package transport
import (
"context"
2024-08-14 15:24:57 +00:00
"git.sch9.ru/new_gate/ms-auth/internal/models"
sessionv1 "git.sch9.ru/new_gate/ms-auth/pkg/go/gen/session/v1"
userv1 "git.sch9.ru/new_gate/ms-auth/pkg/go/gen/user/v1"
2024-07-14 21:26:34 +00:00
"go.uber.org/zap"
"google.golang.org/protobuf/types/known/timestamppb"
"net"
"time"
"google.golang.org/grpc"
)
2024-08-14 10:36:43 +00:00
type SessionService interface {
2024-07-14 21:26:34 +00:00
Create(ctx context.Context, handle, password string) (*string, error)
Read(ctx context.Context, token string) (*int32, error)
Update(ctx context.Context, token string) error
Delete(ctx context.Context, token string) error
}
2024-08-14 10:36:43 +00:00
type UserService interface {
CreateUser(ctx context.Context, user *models.User) (int32, error)
ReadUser(ctx context.Context, id int32) (*models.User, error)
UpdateUser(ctx context.Context, user *models.User) error
DeleteUser(ctx context.Context, id int32) error
2024-07-14 21:26:34 +00:00
}
type AuthServer struct {
sessionv1.UnimplementedSessionServiceServer
2024-08-14 10:36:43 +00:00
sessionService SessionService
2024-07-14 21:26:34 +00:00
userv1.UnimplementedUserServiceServer
2024-08-14 10:36:43 +00:00
userService UserService
2024-07-14 21:26:34 +00:00
2024-08-14 10:36:43 +00:00
GRPCServer *grpc.Server
2024-07-14 21:26:34 +00:00
logger *zap.Logger
2024-08-14 10:36:43 +00:00
ln net.Listener
2024-07-14 21:26:34 +00:00
}
2024-08-14 10:36:43 +00:00
func NewAuthServer(
sessionService SessionService,
userService UserService,
logger *zap.Logger,
ln net.Listener,
) *AuthServer {
server := &AuthServer{
2024-07-14 21:26:34 +00:00
sessionService: sessionService,
userService: userService,
logger: logger,
2024-08-14 10:36:43 +00:00
ln: ln,
2024-07-14 21:26:34 +00:00
}
2024-08-14 10:36:43 +00:00
grpcServer := grpc.NewServer(
grpc.UnaryInterceptor(server.AuthInterceptor()),
)
2024-07-14 21:26:34 +00:00
2024-08-14 10:36:43 +00:00
server.GRPCServer = grpcServer
sessionv1.RegisterSessionServiceServer(server.GRPCServer, server)
2024-07-14 21:26:34 +00:00
2024-08-14 10:36:43 +00:00
return server
2024-07-14 21:26:34 +00:00
}
func AsTimeP(t *timestamppb.Timestamp) *time.Time {
if t == nil {
return nil
}
tt := t.AsTime()
return &tt
}
2024-08-14 10:36:43 +00:00
func AsMRoleP(v userv1.Role) *models.Role {
vv := models.Role(v.Number())
2024-07-14 21:26:34 +00:00
return &vv
}
func AsTimestampP(t *time.Time) *timestamppb.Timestamp {
if t == nil {
return nil
}
return timestamppb.New(*t)
}
2024-08-14 10:36:43 +00:00
func AsRoleP(r *models.Role) *userv1.Role {
2024-07-14 21:26:34 +00:00
if r == nil {
return nil
}
rr := userv1.Role(*r)
return &rr
}