From 2d9fdf9c81e396e1d7ada7202cda597a429956cd Mon Sep 17 00:00:00 2001 From: d34dscene Date: Mon, 4 Aug 2025 15:10:54 +0200 Subject: [PATCH] fix restore and profile tokens --- server/internal/api/service/profile.go | 31 +++++++++++++++++++ server/internal/traefik/config.go | 9 ++++++ .../lib/components/modals/ProfileModal.svelte | 16 +++++----- 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/server/internal/api/service/profile.go b/server/internal/api/service/profile.go index a768e84..cc97d26 100644 --- a/server/internal/api/service/profile.go +++ b/server/internal/api/service/profile.go @@ -46,6 +46,13 @@ func (s *ProfileService) CreateProfile( if err != nil { return nil, connect.NewError(connect.CodeInternal, err) } + + s.app.Event.Broadcast(&mantraev1.EventStreamResponse{ + Action: mantraev1.EventAction_EVENT_ACTION_CREATED, + Data: &mantraev1.EventStreamResponse_Profile{ + Profile: result.ToProto(), + }, + }) return connect.NewResponse(&mantraev1.CreateProfileResponse{ Profile: result.ToProto(), }), nil @@ -62,12 +69,25 @@ func (s *ProfileService) UpdateProfile( } if req.Msg.GetRegenerateToken() { params.Token = util.GenerateToken(6) + } else { + profile, err := s.app.Conn.GetQuery().GetProfile(ctx, params.ID) + if err != nil { + return nil, connect.NewError(connect.CodeInternal, err) + } + params.Token = profile.Token } result, err := s.app.Conn.GetQuery().UpdateProfile(ctx, params) if err != nil { return nil, connect.NewError(connect.CodeInternal, err) } + + s.app.Event.Broadcast(&mantraev1.EventStreamResponse{ + Action: mantraev1.EventAction_EVENT_ACTION_UPDATED, + Data: &mantraev1.EventStreamResponse_Profile{ + Profile: result.ToProto(), + }, + }) return connect.NewResponse(&mantraev1.UpdateProfileResponse{ Profile: result.ToProto(), }), nil @@ -77,9 +97,20 @@ func (s *ProfileService) DeleteProfile( ctx context.Context, req *connect.Request[mantraev1.DeleteProfileRequest], ) (*connect.Response[mantraev1.DeleteProfileResponse], error) { + profile, err := s.app.Conn.GetQuery().GetProfile(ctx, req.Msg.Id) + if err != nil { + return nil, connect.NewError(connect.CodeInternal, err) + } if err := s.app.Conn.GetQuery().DeleteProfile(ctx, req.Msg.Id); err != nil { return nil, connect.NewError(connect.CodeInternal, err) } + + s.app.Event.Broadcast(&mantraev1.EventStreamResponse{ + Action: mantraev1.EventAction_EVENT_ACTION_DELETED, + Data: &mantraev1.EventStreamResponse_Profile{ + Profile: profile.ToProto(), + }, + }) return connect.NewResponse(&mantraev1.DeleteProfileResponse{}), nil } diff --git a/server/internal/traefik/config.go b/server/internal/traefik/config.go index f3a9594..bf51ab4 100644 --- a/server/internal/traefik/config.go +++ b/server/internal/traefik/config.go @@ -7,6 +7,7 @@ import ( "os" "time" + "github.com/google/uuid" "github.com/mizuchilabs/mantrae/server/internal/storage" "github.com/mizuchilabs/mantrae/server/internal/store/db" "github.com/mizuchilabs/mantrae/server/internal/store/schema" @@ -201,6 +202,7 @@ func DynamicToDB( continue } entryPointSet[ep] = db.CreateEntryPointParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: ep, IsDefault: false, @@ -215,6 +217,7 @@ func DynamicToDB( continue } if _, err := q.CreateHttpRouter(ctx, db.CreateHttpRouterParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapRouter(v), @@ -228,6 +231,7 @@ func DynamicToDB( continue } if _, err := q.CreateHttpService(ctx, db.CreateHttpServiceParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapService(v), @@ -240,6 +244,7 @@ func DynamicToDB( continue } if _, err := q.CreateHttpMiddleware(ctx, db.CreateHttpMiddlewareParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapMiddleware(v), @@ -254,6 +259,7 @@ func DynamicToDB( continue } if _, err := q.CreateTcpRouter(ctx, db.CreateTcpRouterParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapTCPRouter(v), @@ -267,6 +273,7 @@ func DynamicToDB( continue } if _, err := q.CreateTcpService(ctx, db.CreateTcpServiceParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapTCPService(v), @@ -293,6 +300,7 @@ func DynamicToDB( continue } if _, err := q.CreateUdpRouter(ctx, db.CreateUdpRouterParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapUDPRouter(v), @@ -306,6 +314,7 @@ func DynamicToDB( continue } if _, err := q.CreateUdpService(ctx, db.CreateUdpServiceParams{ + ID: uuid.New().String(), ProfileID: profileID, Name: k, Config: schema.WrapUDPService(v), diff --git a/web/src/lib/components/modals/ProfileModal.svelte b/web/src/lib/components/modals/ProfileModal.svelte index ff4dca3..7522f47 100644 --- a/web/src/lib/components/modals/ProfileModal.svelte +++ b/web/src/lib/components/modals/ProfileModal.svelte @@ -1,16 +1,16 @@