Create an env using api

This commit is contained in:
2024-04-03 20:05:23 +02:00
parent b9a1fcd02a
commit affabc3c03
14 changed files with 213 additions and 76 deletions

View File

@ -21,7 +21,7 @@ func NewAccountRPCImpl(contoller ctrl.Manager, hashCost int16) *AccountsServer {
type AccountsServer struct {
accounts.UnimplementedAccountsServer
Controller ctrl.Manager
Params *controllers.AccountParams
Params *controllers.AccountParams
}
func (a *AccountsServer) SignUp(ctx context.Context, in *accounts.AccountWithPassword) (*accounts.AccountFullWithToken, error) {
@ -78,4 +78,3 @@ func populateAccount(data *controllers.AccountData, controller ctrl.Manager) *co
Data: data,
}
}

View File

@ -7,47 +7,61 @@ import (
"git.badhouseplants.net/softplayer/softplayer-backend/internal/controllers"
"git.badhouseplants.net/softplayer/softplayer-backend/internal/helpers/email"
proto_email "git.badhouseplants.net/softplayer/softplayer-go-proto/pkg/email"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
"google.golang.org/protobuf/types/known/emptypb"
ctrl "sigs.k8s.io/controller-runtime"
)
type EmailServer struct {
proto_email.UnimplementedEmailValidationServer
emailConfig email.EmailConf
controller ctrl.Manager
emailConfig email.EmailConf
controller ctrl.Manager
devMode bool
}
func InitEmailServer(controller ctrl.Manager, emailConfig *email.EmailConf) *EmailServer {
func InitEmailServer(controller ctrl.Manager, emailConfig *email.EmailConf, devMode bool) *EmailServer {
return &EmailServer{
controller: controller,
controller: controller,
emailConfig: *emailConfig,
devMode: devMode,
}
}
func (c *EmailServer) SendRequest(ctx context.Context, in *proto_email.RequestValidation) (*emptypb.Empty, error) {
emailSvc := controllers.EmailSvc {
emailSvc := controllers.EmailSvc{
Data: controllers.EmailData{
UserID: in.GetUserId(),
},
EmailConfig: c.emailConfig,
Controller: c.controller,
Controller: c.controller,
DevMode: c.devMode,
}
err := emailSvc.SendVerification(ctx)
if err != nil {
return nil, err
}
if c.devMode {
header := metadata.Pairs("code", emailSvc.Data.Code)
if err := grpc.SendHeader(ctx, header); err != nil {
return nil, err
}
trailer := metadata.Pairs("trailer-key", "val")
if err := grpc.SetTrailer(ctx, trailer); err != nil {
return nil, err
}
}
return &emptypb.Empty{}, nil
}
func (c *EmailServer) ValidateEmail(ctx context.Context, in *proto_email.ConfirmValidation) (*emptypb.Empty, error) {
emailSvc := controllers.EmailSvc {
emailSvc := controllers.EmailSvc{
Data: controllers.EmailData{
UserID: in.GetUserId(),
Code: fmt.Sprintf("%d", in.GetCode()),
Code: fmt.Sprintf("%d", in.GetCode()),
},
EmailConfig: c.emailConfig,
Controller: c.controller,
Controller: c.controller,
}
err := emailSvc.ConfirmVerification(ctx)
if err != nil {

View File

@ -2,28 +2,51 @@ package v1
import (
"context"
"errors"
"git.badhouseplants.net/softplayer/softplayer-backend/internal/controllers"
proto "git.badhouseplants.net/softplayer/softplayer-go-proto/pkg/environments"
"github.com/golang/protobuf/ptypes/empty"
"google.golang.org/grpc/metadata"
ctrl "sigs.k8s.io/controller-runtime"
)
func NewapiGrpcImpl() *EnvironmentsServer {
return &EnvironmentsServer{}
func NewapiGrpcImpl(controller ctrl.Manager) *EnvironmentsServer {
return &EnvironmentsServer{
controller: controller,
}
}
type EnvironmentsServer struct {
proto.UnimplementedEnvironmentsServer
controller ctrl.Manager
}
func (e *EnvironmentsServer) Create(ctx context.Context, in *proto.EnvironmentData) (*proto.EnvironmentFull, error) {
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
return nil, errors.New("metadata is not provided")
}
token, ok := md["token"]
if !ok {
return nil, errors.New("token is not sent via metadata")
}
uuid, ok := md["uuid"]
if !ok {
return nil, errors.New("used id is not sent via metadata")
}
data := &controllers.EnvironemntData{
Name: in.GetName(),
Provider: in.GetProvider().String(),
Name: in.GetName(),
Provider: in.GetProvider().String(),
Kubernetes: in.GetKubernetes().String(),
}
environment := &controllers.Environemnt{
Controller: nil,
UserID: uuid[0],
Controller: e.controller,
Data: data,
Token: token[0],
}
err := environment.Create(ctx)
if err != nil {