From 143293a8eb5bb109155942d613dd291d17940ee6 Mon Sep 17 00:00:00 2001 From: hippo-an Date: Thu, 28 Nov 2024 15:59:02 +0900 Subject: [PATCH 01/16] update docker compose volume mount path for api server --- scripts/docker-compose.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/docker-compose.yaml b/scripts/docker-compose.yaml index dd8f4977..3c2dd392 100644 --- a/scripts/docker-compose.yaml +++ b/scripts/docker-compose.yaml @@ -15,11 +15,11 @@ services: env_file: - ../api/.env environment: - USER_AUTH_DATA_PATH: /conf/user.dat - USER_AUTH_CONF_PATH: /conf/authsetting.yaml - MENU_CONF_DATA_PATH: /conf/menu.yaml + USER_AUTH_DATA_PATH: /app/conf/user.dat + USER_AUTH_CONF_PATH: /app/conf/authsetting.yaml + MENU_CONF_DATA_PATH: /app/conf/menu.yaml volumes: - - ../api/conf:/conf/ + - ../api/conf:/app/conf/ cm-butterfly-front: container_name: cm-butterfly-front From 56734b193d6289c20dee3710ccb278d737a1a120 Mon Sep 17 00:00:00 2001 From: hippo-an Date: Fri, 29 Nov 2024 16:56:48 +0900 Subject: [PATCH 02/16] update refresh token logic for user session update --- api/actions/app.go | 3 ++- api/actions/auth.go | 10 ++++++++-- api/actions/middleware.go | 32 ++++++++++++++++++++++++++++++++ api/handler/auth.go | 30 ++++++++++++++++++++++++------ api/handler/http-util.go | 13 ++++++++++++- 5 files changed, 78 insertions(+), 10 deletions(-) diff --git a/api/actions/app.go b/api/actions/app.go index 03eeb518..e79cac77 100644 --- a/api/actions/app.go +++ b/api/actions/app.go @@ -46,7 +46,8 @@ func App() *buffalo.App { auth := app.Group(apiPath + "/auth") auth.Middleware.Skip(SetContextMiddleware, AuthLogin) auth.POST("/login", AuthLogin) - auth.POST("/refresh", AuthLoginRefresh) + auth.Middleware.Skip(SetContextMiddleware, AuthLogin) + auth.POST("/refresh", SetRefreshCtxMiddleware(AuthLoginRefresh)) auth.POST("/validate", AuthValidate) auth.POST("/logout", AuthLogout) auth.POST("/userinfo", AuthUserinfo) diff --git a/api/actions/auth.go b/api/actions/auth.go index d2864271..feecf2d8 100644 --- a/api/actions/auth.go +++ b/api/actions/auth.go @@ -8,6 +8,7 @@ import ( "log" "github.com/gobuffalo/buffalo" + "github.com/gobuffalo/buffalo/render" "github.com/gobuffalo/pop/v6" ) @@ -54,16 +55,21 @@ func AuthLoginRefresh(c buffalo.Context) error { return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse)) } + refreshToken := c.Value("refreshToken").(string) + if refreshToken != sess.RefreshToken { + return c.Render(http.StatusForbidden, render.JSON(map[string]interface{}{"error": http.StatusText(http.StatusForbidden)})) + } + tokenSet, err := handler.RefreshAccessToken(sess.RefreshToken) if err != nil { app.Logger.Error(err.Error()) - commonResponse := handler.CommonResponseStatusBadRequest(err.Error()) + commonResponse := handler.CommonResponseStatusForbidden(err.Error()) return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse)) } sess.AccessToken = tokenSet.Accesstoken sess.ExpiresIn = float64(tokenSet.ExpiresIn) - sess.RefreshToken = tokenSet.Accesstoken + sess.RefreshToken = tokenSet.RefreshToken sess.RefreshExpiresIn = float64(tokenSet.RefreshExpiresIn) _, err = handler.UpdateUserSess(tx, sess) diff --git a/api/actions/middleware.go b/api/actions/middleware.go index 327eaf5f..1bebd35c 100644 --- a/api/actions/middleware.go +++ b/api/actions/middleware.go @@ -2,12 +2,14 @@ package actions import ( "api/handler" + "errors" "net/http" "strings" "github.com/gobuffalo/buffalo" "github.com/gobuffalo/buffalo/render" "github.com/gobuffalo/pop/v6" + "github.com/golang-jwt/jwt/v5" ) func SetContextMiddleware(next buffalo.Handler) buffalo.Handler { @@ -37,3 +39,33 @@ func SetContextMiddleware(next buffalo.Handler) buffalo.Handler { return next(c) } } + +func SetRefreshCtxMiddleware(next buffalo.Handler) buffalo.Handler { + return func(c buffalo.Context) error { + accessToken := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "Bearer ") + _, err := handler.GetTokenClaims(accessToken) + if !errors.Is(err, jwt.ErrTokenExpired) { + app.Logger.Error(err.Error()) + return c.Render(http.StatusUnauthorized, render.JSON(map[string]interface{}{"error": "Unauthorized"})) + } + + commonRequest := &handler.CommonRequest{} + if err := c.Bind(commonRequest); err != nil { + app.Logger.Error(err.Error()) + return c.Render(http.StatusBadRequest, render.JSON(map[string]interface{}{"error": http.StatusText(http.StatusBadRequest)})) + } + + refreshToken := commonRequest.Request.(map[string]interface{})["refresh_token "].(string) + + refreshTokenClaim, err := handler.GetRefreshTokenClaims(refreshToken) + if err != nil { + app.Logger.Error(err.Error()) + return c.Render(http.StatusForbidden, render.JSON(map[string]interface{}{"error": http.StatusText(http.StatusForbidden)})) + } + + c.Set("UserId", refreshTokenClaim.Upn) + c.Set("refreshToken", refreshToken) + + return next(c) + } +} diff --git a/api/handler/auth.go b/api/handler/auth.go index d6f64551..25d265bd 100644 --- a/api/handler/auth.go +++ b/api/handler/auth.go @@ -18,8 +18,8 @@ import ( ) const ( - tokenExpired = time.Minute * 60 - refreshTokenExpired = time.Minute * 180 + tokenExpired = time.Minute * 1 + refreshTokenExpired = time.Minute * 3 ) type CmigAuthSetting struct { @@ -214,9 +214,10 @@ func generateJWT() (*CmigUserLoginResponse, error) { refreshExp := time.Now().Add(refreshTokenExpired).Unix() refreshClaims := CmigRefreshtokenClaims{ - Exp: exp, + Exp: refreshExp, + Upn: user.Id, MapClaims: &jwt.MapClaims{ - "exp": exp, + "exp": refreshExp, }, } refreshToken := jwt.NewWithClaims(jwt.SigningMethodHS256, refreshClaims) @@ -242,7 +243,7 @@ func GetUserToken(id string, password string) (*CmigUserLoginResponse, error) { } func RefreshAccessToken(refreshToken string) (*CmigUserLoginResponse, error) { - token, err := jwt.ParseWithClaims(refreshToken, &CmigAccesstokenClaims{}, func(token *jwt.Token) (interface{}, error) { + token, err := jwt.ParseWithClaims(refreshToken, &CmigRefreshtokenClaims{}, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } @@ -251,7 +252,7 @@ func RefreshAccessToken(refreshToken string) (*CmigUserLoginResponse, error) { if err != nil { return nil, fmt.Errorf("token is invalid : %s", err.Error()) } - if claims, ok := token.Claims.(*CmigAccesstokenClaims); ok && token.Valid { + if claims, ok := token.Claims.(*CmigRefreshtokenClaims); ok && token.Valid { if time.Now().Unix() > claims.Exp { return nil, fmt.Errorf("refresh token expired") } @@ -261,6 +262,23 @@ func RefreshAccessToken(refreshToken string) (*CmigUserLoginResponse, error) { } } +func GetRefreshTokenClaims(tokenString string) (*CmigRefreshtokenClaims, error) { + token, err := jwt.ParseWithClaims(tokenString, &CmigRefreshtokenClaims{}, func(token *jwt.Token) (interface{}, error) { + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) + } + return encryptionKey, nil + }) + if err != nil { + return nil, fmt.Errorf("token is invalid : %s", err.Error()) + } + if claims, ok := token.Claims.(*CmigRefreshtokenClaims); ok && token.Valid { + return claims, nil + } else { + return nil, fmt.Errorf("token is invalid") + } +} + func GetTokenClaims(tokenString string) (*CmigAccesstokenClaims, error) { token, err := jwt.ParseWithClaims(tokenString, &CmigAccesstokenClaims{}, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { diff --git a/api/handler/http-util.go b/api/handler/http-util.go index 1ec9849f..b9ac3c59 100644 --- a/api/handler/http-util.go +++ b/api/handler/http-util.go @@ -65,7 +65,7 @@ type ApiYaml struct { // //////////////////////////////////////////////////////////////// var ( - ApiYamlSet ApiYaml + ApiYamlSet ApiYaml ) func init() { @@ -359,6 +359,17 @@ func CommonResponseStatusBadRequest(responseData interface{}) *CommonResponse { } } +func CommonResponseStatusForbidden(responseData interface{}) *CommonResponse { + webStatus := WebStatus{ + StatusCode: http.StatusForbidden, + Message: http.StatusText(http.StatusForbidden), + } + return &CommonResponse{ + ResponseData: responseData, + Status: webStatus, + } +} + func CommonResponseStatusInternalServerError(responseData interface{}) *CommonResponse { webStatus := WebStatus{ StatusCode: http.StatusInternalServerError, From 331a545e79712736d70e39091ad685547737d5fa Mon Sep 17 00:00:00 2001 From: hippo-an Date: Fri, 29 Nov 2024 16:58:50 +0900 Subject: [PATCH 03/16] update skip middleware for refresh token --- api/actions/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/actions/app.go b/api/actions/app.go index e79cac77..d8c7ecb0 100644 --- a/api/actions/app.go +++ b/api/actions/app.go @@ -46,7 +46,7 @@ func App() *buffalo.App { auth := app.Group(apiPath + "/auth") auth.Middleware.Skip(SetContextMiddleware, AuthLogin) auth.POST("/login", AuthLogin) - auth.Middleware.Skip(SetContextMiddleware, AuthLogin) + auth.Middleware.Skip(SetContextMiddleware, AuthLoginRefresh) auth.POST("/refresh", SetRefreshCtxMiddleware(AuthLoginRefresh)) auth.POST("/validate", AuthValidate) auth.POST("/logout", AuthLogout) From 8646c7355fb91d65d46491a3a2a87b1848efc9c5 Mon Sep 17 00:00:00 2001 From: hippo-an Date: Fri, 29 Nov 2024 17:24:18 +0900 Subject: [PATCH 04/16] simplify middleware skip --- api/actions/app.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/actions/app.go b/api/actions/app.go index d8c7ecb0..33da01aa 100644 --- a/api/actions/app.go +++ b/api/actions/app.go @@ -44,9 +44,8 @@ func App() *buffalo.App { apiPath := "/api" auth := app.Group(apiPath + "/auth") - auth.Middleware.Skip(SetContextMiddleware, AuthLogin) + auth.Middleware.Skip(SetContextMiddleware, AuthLogin, AuthLoginRefresh) auth.POST("/login", AuthLogin) - auth.Middleware.Skip(SetContextMiddleware, AuthLoginRefresh) auth.POST("/refresh", SetRefreshCtxMiddleware(AuthLoginRefresh)) auth.POST("/validate", AuthValidate) auth.POST("/logout", AuthLogout) From 2c4153de21687a201e2c9a3f2f19845d4074d01b Mon Sep 17 00:00:00 2001 From: hippo-an Date: Fri, 29 Nov 2024 17:29:43 +0900 Subject: [PATCH 05/16] date error response --- api/handler/auth.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/handler/auth.go b/api/handler/auth.go index 25d265bd..14393bfa 100644 --- a/api/handler/auth.go +++ b/api/handler/auth.go @@ -270,7 +270,7 @@ func GetRefreshTokenClaims(tokenString string) (*CmigRefreshtokenClaims, error) return encryptionKey, nil }) if err != nil { - return nil, fmt.Errorf("token is invalid : %s", err.Error()) + return nil, err } if claims, ok := token.Claims.(*CmigRefreshtokenClaims); ok && token.Valid { return claims, nil @@ -287,7 +287,7 @@ func GetTokenClaims(tokenString string) (*CmigAccesstokenClaims, error) { return encryptionKey, nil }) if err != nil { - return nil, fmt.Errorf("token is invalid : %s", err.Error()) + return nil, err } if claims, ok := token.Claims.(*CmigAccesstokenClaims); ok && token.Valid { return claims, nil From ec23f232cbfd4c8a255c89cbcb51aef5c29b2e46 Mon Sep 17 00:00:00 2001 From: hippo-an Date: Fri, 29 Nov 2024 17:50:28 +0900 Subject: [PATCH 06/16] update error handling for refrech ctx --- api/actions/middleware.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/actions/middleware.go b/api/actions/middleware.go index 1bebd35c..de6f9558 100644 --- a/api/actions/middleware.go +++ b/api/actions/middleware.go @@ -44,7 +44,7 @@ func SetRefreshCtxMiddleware(next buffalo.Handler) buffalo.Handler { return func(c buffalo.Context) error { accessToken := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "Bearer ") _, err := handler.GetTokenClaims(accessToken) - if !errors.Is(err, jwt.ErrTokenExpired) { + if !errors.Is(err, jwt.ErrTokenExpired) && !strings.Contains(err.Error(), "token is expired") { app.Logger.Error(err.Error()) return c.Render(http.StatusUnauthorized, render.JSON(map[string]interface{}{"error": "Unauthorized"})) } From 12dc7fb97f6619841ea0d9e3f4fe711e7d5c7a5c Mon Sep 17 00:00:00 2001 From: hippo-an Date: Fri, 29 Nov 2024 18:08:03 +0900 Subject: [PATCH 07/16] refresh token error claim check --- api/actions/middleware.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/api/actions/middleware.go b/api/actions/middleware.go index de6f9558..653eb6a0 100644 --- a/api/actions/middleware.go +++ b/api/actions/middleware.go @@ -2,14 +2,12 @@ package actions import ( "api/handler" - "errors" "net/http" "strings" "github.com/gobuffalo/buffalo" "github.com/gobuffalo/buffalo/render" "github.com/gobuffalo/pop/v6" - "github.com/golang-jwt/jwt/v5" ) func SetContextMiddleware(next buffalo.Handler) buffalo.Handler { @@ -44,8 +42,9 @@ func SetRefreshCtxMiddleware(next buffalo.Handler) buffalo.Handler { return func(c buffalo.Context) error { accessToken := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "Bearer ") _, err := handler.GetTokenClaims(accessToken) - if !errors.Is(err, jwt.ErrTokenExpired) && !strings.Contains(err.Error(), "token is expired") { - app.Logger.Error(err.Error()) + if errMsg := err.Error(); err != nil && !strings.Contains(errMsg, "token is expired") { + app.Logger.Error(errMsg) + app.Logger.Error("error occured from token claim") return c.Render(http.StatusUnauthorized, render.JSON(map[string]interface{}{"error": "Unauthorized"})) } From 00747c2c434ac88c7766b511e3ec6e8a06331e9c Mon Sep 17 00:00:00 2001 From: daeyeon ko Date: Fri, 29 Nov 2024 15:20:18 +0900 Subject: [PATCH 08/16] refactor : move sequential folder --- .../designer/editor/model/beetleTaskEditorModel.ts | 0 .../designer/editor/model/editorProviders.ts | 4 ++-- .../sequential/designer/editor/model/utils.ts | 0 .../designer/editor/ui/BeetleTaskEditor.vue | 4 ++-- .../designer/editor/ui/TaskGroupEditor.vue | 0 .../designer/model/sequentialDesignerModel.ts | 4 ++-- .../designer/shortcut/ui/SequentialShortCut.vue | 0 .../sequential/designer/toolbox/model/api/index.ts | 0 .../designer/toolbox/model/toolboxModel.ts | 4 ++-- .../designer/toolbox/model/toolboxSteps.ts | 0 .../sequential/designer/ui/SequentialDesigner.vue | 12 ++++++------ .../workflowEditor/model/workflowEditorModel.ts | 6 +++--- .../workflow/workflowEditor/ui/WorkflowEditor.vue | 8 ++++---- 13 files changed, 21 insertions(+), 21 deletions(-) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/editor/model/beetleTaskEditorModel.ts (100%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/editor/model/editorProviders.ts (88%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/editor/model/utils.ts (100%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/editor/ui/BeetleTaskEditor.vue (97%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/editor/ui/TaskGroupEditor.vue (100%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/model/sequentialDesignerModel.ts (95%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/shortcut/ui/SequentialShortCut.vue (100%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/toolbox/model/api/index.ts (100%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/toolbox/model/toolboxModel.ts (92%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/toolbox/model/toolboxSteps.ts (100%) rename front/src/features/{workflow/workflowEditor => }/sequential/designer/ui/SequentialDesigner.vue (78%) diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/editor/model/beetleTaskEditorModel.ts b/front/src/features/sequential/designer/editor/model/beetleTaskEditorModel.ts similarity index 100% rename from front/src/features/workflow/workflowEditor/sequential/designer/editor/model/beetleTaskEditorModel.ts rename to front/src/features/sequential/designer/editor/model/beetleTaskEditorModel.ts diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/editor/model/editorProviders.ts b/front/src/features/sequential/designer/editor/model/editorProviders.ts similarity index 88% rename from front/src/features/workflow/workflowEditor/sequential/designer/editor/model/editorProviders.ts rename to front/src/features/sequential/designer/editor/model/editorProviders.ts index 06a066bd..0c9cb8f4 100644 --- a/front/src/features/workflow/workflowEditor/sequential/designer/editor/model/editorProviders.ts +++ b/front/src/features/sequential/designer/editor/model/editorProviders.ts @@ -1,6 +1,6 @@ import { insertDynamicComponent } from '@/shared/utils'; -import { getSequencePath } from '@/features/workflow/workflowEditor/sequential/designer/editor/model/utils.ts'; -import BeetleTaskEditor from '@/features/workflow/workflowEditor/sequential/designer/editor/ui/BeetleTaskEditor.vue'; +import { getSequencePath } from '@/features/sequential/designer/editor/model/utils.ts'; +import BeetleTaskEditor from '@/features/sequential/designer/editor/ui/BeetleTaskEditor.vue'; export function editorProviders() { const editor = document.createElement('div'); diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/editor/model/utils.ts b/front/src/features/sequential/designer/editor/model/utils.ts similarity index 100% rename from front/src/features/workflow/workflowEditor/sequential/designer/editor/model/utils.ts rename to front/src/features/sequential/designer/editor/model/utils.ts diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/editor/ui/BeetleTaskEditor.vue b/front/src/features/sequential/designer/editor/ui/BeetleTaskEditor.vue similarity index 97% rename from front/src/features/workflow/workflowEditor/sequential/designer/editor/ui/BeetleTaskEditor.vue rename to front/src/features/sequential/designer/editor/ui/BeetleTaskEditor.vue index 3dcc89c9..1ab5d08e 100644 --- a/front/src/features/workflow/workflowEditor/sequential/designer/editor/ui/BeetleTaskEditor.vue +++ b/front/src/features/sequential/designer/editor/ui/BeetleTaskEditor.vue @@ -13,9 +13,9 @@ import Vue, { watch, } from 'vue'; import { useInputModel } from '@/shared/hooks/input/useInputModel.ts'; -import { useTaskEditorModel } from '@/features/workflow/workflowEditor/sequential/designer/editor/model/beetleTaskEditorModel.ts'; +import { useTaskEditorModel } from '@/features/sequential/designer/editor/model/beetleTaskEditorModel.ts'; import BAccordion from '@/shared/ui/Input/Accordian/BAccordion.vue'; -import SequentialShortCut from '@/features/workflow/workflowEditor/sequential/designer/shortcut/ui/SequentialShortCut.vue'; +import SequentialShortCut from '@/features/sequential/designer/shortcut/ui/SequentialShortCut.vue'; import { Step } from '@/features/workflow/workflowEditor/model/types.ts'; interface IProps { diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/editor/ui/TaskGroupEditor.vue b/front/src/features/sequential/designer/editor/ui/TaskGroupEditor.vue similarity index 100% rename from front/src/features/workflow/workflowEditor/sequential/designer/editor/ui/TaskGroupEditor.vue rename to front/src/features/sequential/designer/editor/ui/TaskGroupEditor.vue diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/model/sequentialDesignerModel.ts b/front/src/features/sequential/designer/model/sequentialDesignerModel.ts similarity index 95% rename from front/src/features/workflow/workflowEditor/sequential/designer/model/sequentialDesignerModel.ts rename to front/src/features/sequential/designer/model/sequentialDesignerModel.ts index c63b750b..8b229db7 100644 --- a/front/src/features/workflow/workflowEditor/sequential/designer/model/sequentialDesignerModel.ts +++ b/front/src/features/sequential/designer/model/sequentialDesignerModel.ts @@ -5,8 +5,8 @@ import { } from 'sequential-workflow-designer'; import { Definition, Step } from 'sequential-workflow-model'; import getRandomId from '@/shared/utils/uuid'; -import { toolboxSteps } from '@/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxSteps.ts'; -import { editorProviders } from '@/features/workflow/workflowEditor/sequential/designer/editor/model/editorProviders.ts'; +import { toolboxSteps } from '@/features/sequential/designer/toolbox/model/toolboxSteps.ts'; +import { editorProviders } from '@/features/sequential/designer/editor/model/editorProviders.ts'; import testSvg from '@/shared/asset/image/testSvg.svg'; export function useSequentialDesignerModel(refs: any) { diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/shortcut/ui/SequentialShortCut.vue b/front/src/features/sequential/designer/shortcut/ui/SequentialShortCut.vue similarity index 100% rename from front/src/features/workflow/workflowEditor/sequential/designer/shortcut/ui/SequentialShortCut.vue rename to front/src/features/sequential/designer/shortcut/ui/SequentialShortCut.vue diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/api/index.ts b/front/src/features/sequential/designer/toolbox/model/api/index.ts similarity index 100% rename from front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/api/index.ts rename to front/src/features/sequential/designer/toolbox/model/api/index.ts diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxModel.ts b/front/src/features/sequential/designer/toolbox/model/toolboxModel.ts similarity index 92% rename from front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxModel.ts rename to front/src/features/sequential/designer/toolbox/model/toolboxModel.ts index 27867f83..8b9f34ee 100644 --- a/front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxModel.ts +++ b/front/src/features/sequential/designer/toolbox/model/toolboxModel.ts @@ -1,14 +1,14 @@ import { getTaskComponentList, ITaskComponentInfoResponse, -} from '@/features/workflow/workflowEditor/sequential/designer/toolbox/model/api'; +} from '@/features/sequential/designer/toolbox/model/api'; import { parseRequestBody } from '@/shared/utils/stringToObject'; import getRandomId from '@/shared/utils/uuid'; import { fixedModel, Step, } from '@/features/workflow/workflowEditor/model/types.ts'; -import { toolboxSteps } from '@/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxSteps.ts'; +import { toolboxSteps } from '@/features/sequential/designer/toolbox/model/toolboxSteps.ts'; import { ITaskResponse } from '@/entities'; export function useSequentialToolboxModel() { diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxSteps.ts b/front/src/features/sequential/designer/toolbox/model/toolboxSteps.ts similarity index 100% rename from front/src/features/workflow/workflowEditor/sequential/designer/toolbox/model/toolboxSteps.ts rename to front/src/features/sequential/designer/toolbox/model/toolboxSteps.ts diff --git a/front/src/features/workflow/workflowEditor/sequential/designer/ui/SequentialDesigner.vue b/front/src/features/sequential/designer/ui/SequentialDesigner.vue similarity index 78% rename from front/src/features/workflow/workflowEditor/sequential/designer/ui/SequentialDesigner.vue rename to front/src/features/sequential/designer/ui/SequentialDesigner.vue index ee31ebe4..ea9e92b2 100644 --- a/front/src/features/workflow/workflowEditor/sequential/designer/ui/SequentialDesigner.vue +++ b/front/src/features/sequential/designer/ui/SequentialDesigner.vue @@ -1,11 +1,11 @@