diff --git a/controllers/workflow.go b/controllers/workflow.go index a784625..d6e35f5 100644 --- a/controllers/workflow.go +++ b/controllers/workflow.go @@ -38,11 +38,13 @@ var paths = map[tools.DataType]map[tools.METHOD]string{ // paths to call other O // @Success 200 {workspace} models.workspace // @router /search/:search [get] func (o *WorkflowController) Search() { - user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) // store and return Id or post with UUID search := o.Ctx.Input.Param(":search") isDraft := o.Ctx.Input.Query("is_draft") - o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, nil).Search(nil, search, isDraft == "true") + // o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, nil).Search(nil, search, isDraft == "true") + o.Data["json"] = oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), nil).Search(nil, search, isDraft == "true") + o.ServeJSON() } @@ -53,7 +55,7 @@ func (o *WorkflowController) Search() { // @Success 200 {object} models.workflow // @router /:id [put] func (o *WorkflowController) Put() { - user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) // store and return Id or post with UUID var res map[string]interface{} id := o.Ctx.Input.Param(":id") @@ -62,7 +64,9 @@ func (o *WorkflowController) Put() { caller := tools.NewHTTPCaller(paths) // create a new HTTP caller caller.Disabled = oclib.IsQueryParamsEquals(o.Ctx.Input, "is_remote", true) o.Ctx.Input.Param("is_remote") - data := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).UpdateOne(res, id) + // data := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).UpdateOne(res, id) + data := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), caller).UpdateOne(res, id) + o.Data["json"] = data o.ServeJSON() } @@ -73,12 +77,13 @@ func (o *WorkflowController) Put() { // @Success 200 {object} models.workflow // @router / [post] func (o *WorkflowController) Post() { - user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) var res map[string]interface{} json.Unmarshal(o.Ctx.Input.CopyBody(10000000), &res) caller := tools.NewHTTPCaller(paths) // create a new HTTP caller caller.Disabled = oclib.IsQueryParamsEquals(o.Ctx.Input, "is_remote", true) - data := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).StoreOne(res) + // data := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).StoreOne(res) + data := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), caller).StoreOne(res) o.Data["json"] = data o.ServeJSON() } @@ -106,9 +111,11 @@ func (o *WorkflowController) Publish() { // @Success 200 {workflow} models.workflow // @router / [get] func (o *WorkflowController) GetAll() { - user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) isDraft := o.Ctx.Input.Query("is_draft") - o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, nil).LoadAll(isDraft == "true") + // o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, nil).LoadAll(isDraft == "true") + + o.Data["json"] = oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), nil).LoadAll(isDraft == "true") o.ServeJSON() } @@ -118,11 +125,13 @@ func (o *WorkflowController) GetAll() { // @Success 200 {workflow} models.workflow // @router /:id [get] func (o *WorkflowController) Get() { - user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) id := o.Ctx.Input.Param(":id") caller := tools.NewHTTPCaller(paths) // create a new HTTP caller caller.Disabled = oclib.IsQueryParamsEquals(o.Ctx.Input, "is_remote", true) - o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).LoadOne(id) + // .Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).LoadOne(id) + o.Data["json"] = oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), caller).LoadOne(id) + o.ServeJSON() } @@ -162,8 +171,10 @@ func (o *WorkflowController) Check() { "error": errors.New("invalid date format"), } } else { - user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) - res := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, nil).LoadOne(id) + // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + //res := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, nil).LoadOne(id) + res := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), nil).LoadOne(id) + if res.Data != nil { workflow := res.ToWorkflow() caller := tools.NewHTTPCaller(map[tools.DataType]map[tools.METHOD]string{ // paths to call other OC services @@ -175,7 +186,8 @@ func (o *WorkflowController) Check() { }, }) isAvailable, err := workflow.CheckBooking(caller) // check booking - logger.Info().Msg(fmt.Sprintf("Result of availability check on %v between %v and %v : %v", peerID, o.Ctx.Input.Param(":start_date"), o.Ctx.Input.Param(":end_date"), isAvailable)) + fmt.Println(err) + logger.Info().Msg(fmt.Sprintf("Result of availability check between %v and %v : %v", o.Ctx.Input.Param(":start_date"), o.Ctx.Input.Param(":end_date"), isAvailable)) code := 200 if !isAvailable { // if not available then its a conflict logger.Info().Msg("Returning code 409 after checking availability, error value :" + fmt.Sprint(err)) diff --git a/docker-compose.yml b/docker-compose.yml index 56f8573..386cf04 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,8 +17,11 @@ services: - "traefik.http.services.workflow.loadbalancer.server.port=8080" - "traefik.http.middlewares.workflow-rewrite.replacepathregex.regex=^/workflow(.*)" - "traefik.http.middlewares.workflow-rewrite.replacepathregex.replacement=/oc$1" - - "traefik.http.routers.workflow.middlewares=workflow-rewrite" - - "traefik.http.middlewares.workflow.forwardauth.address=http://oc-auth:8080/oc/forward" + - "traefik.http.routers.workflow.middlewares=workflow-rewrite,auth-workflow" + + - "traefik.http.middlewares.auth-workflow.forwardauth.address=http://oc-auth:8080/oc/forward" + - "traefik.http.middlewares.auth-workflow.forwardauth.trustForwardHeader=true" + - "traefik.http.middlewares.auth-workflow.forwardauth.authResponseHeaders=X-Auth-Request-User,X-Auth-Request-Email" networks: - oc diff --git a/go.mod b/go.mod index 29c62c1..1e62fd3 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,9 @@ module oc-workflow -go 1.23.0 - -toolchain go1.24.0 +go 1.24.6 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20260203150531-ef916fe2d995 + cloud.o-forge.io/core/oc-lib v0.0.0-20260219084344-9662ac6d678c github.com/beego/beego/v2 v2.3.7 github.com/nats-io/nats.go v1.41.2 github.com/smartystreets/goconvey v1.7.2 @@ -16,6 +14,7 @@ require ( github.com/biter777/countries v1.7.5 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect @@ -29,6 +28,7 @@ require ( github.com/klauspost/compress v1.18.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect + github.com/libp2p/go-libp2p/core v0.43.0-rc2 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -42,7 +42,7 @@ require ( github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/robfig/cron v1.2.0 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/rs/zerolog v1.34.0 // indirect github.com/shiena/ansicolor v0.0.0-20230509054315-a9deabde6e02 // indirect github.com/smartystreets/assertions v1.2.0 // indirect diff --git a/go.sum b/go.sum index 101085a..9afea40 100644 --- a/go.sum +++ b/go.sum @@ -20,6 +20,14 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20260203083753-4f28b9b589d6 h1:N+0xkioACl3PN cloud.o-forge.io/core/oc-lib v0.0.0-20260203083753-4f28b9b589d6/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= cloud.o-forge.io/core/oc-lib v0.0.0-20260203150531-ef916fe2d995 h1:ZDRvnzTTNHgMm5hYmseHdEPqQ6rn/4v+P9f/JIxPaNw= cloud.o-forge.io/core/oc-lib v0.0.0-20260203150531-ef916fe2d995/go.mod h1:T0UCxRd8w+qCVVC0NEyDiWIGC5ADwEbQ7hFcvftd4Ks= +cloud.o-forge.io/core/oc-lib v0.0.0-20260212123952-403913d8cf13 h1:DNIPQ7C+7wjbj5RUx29wLxuIe/wiSOcuUMlLRIv6Fvs= +cloud.o-forge.io/core/oc-lib v0.0.0-20260212123952-403913d8cf13/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= +cloud.o-forge.io/core/oc-lib v0.0.0-20260218112419-fa5c3a3c605b h1:ws9S0QhCiwYuxCZNi6ZfZsRvdRJ6KkkOfLT/suMrcUk= +cloud.o-forge.io/core/oc-lib v0.0.0-20260218112419-fa5c3a3c605b/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= +cloud.o-forge.io/core/oc-lib v0.0.0-20260218132556-0b41e2505e2f h1:OFuJhi23D/UNwn8Jo30HDt/Sm2Ea1ljUk6IVicYSuAQ= +cloud.o-forge.io/core/oc-lib v0.0.0-20260218132556-0b41e2505e2f/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= +cloud.o-forge.io/core/oc-lib v0.0.0-20260219084344-9662ac6d678c h1:brsB6se+xMv386Vf6dSu3In2QZSH4EqgcAYkI4fNpJw= +cloud.o-forge.io/core/oc-lib v0.0.0-20260219084344-9662ac6d678c/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beego/beego/v2 v2.3.7 h1:z4btKtjU/rfp5BiYHkGD2QPjK9i1E9GH+I7vfhn6Agk= github.com/beego/beego/v2 v2.3.7/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4= @@ -39,6 +47,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/elazarl/go-bindata-assetfs v1.0.1 h1:m0kkaHRKEu7tUIUFVwhGGGYClXvyl4RE03qmvRTNfbw= github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/etcd-io/etcd v3.3.17+incompatible/go.mod h1:cdZ77EstHBwVtD6iTgzgvogwcjo9m4iOqoijouPJ4bs= @@ -81,6 +91,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/libp2p/go-libp2p/core v0.43.0-rc2 h1:1X1aDJNWhMfodJ/ynbaGLkgnC8f+hfBIqQDrzxFZOqI= +github.com/libp2p/go-libp2p/core v0.43.0-rc2/go.mod h1:NYeJ9lvyBv9nbDk2IuGb8gFKEOkIv/W5YRIy1pAJB2Q= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= @@ -126,6 +138,7 @@ github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= diff --git a/main.go b/main.go index a6c72c9..4fcf73f 100644 --- a/main.go +++ b/main.go @@ -4,10 +4,12 @@ import ( _ "oc-workflow/routers" oclib "cloud.o-forge.io/core/oc-lib" + beego "github.com/beego/beego/v2/server/web" ) const appname = "oc-workflow" func main() { oclib.InitAPI(appname) + beego.Run() }