From 8141a9eba042e92383e2e896f9fe4911a119091d Mon Sep 17 00:00:00 2001 From: Zeni Kim Date: Thu, 24 Oct 2024 17:06:52 -0500 Subject: [PATCH 1/4] add sqlite to ignore watcher --- .env-example | 2 +- storage/sqlite.db | Bin 12288 -> 0 bytes storage/sqlite/sqlite.db | Bin 0 -> 90112 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 storage/sqlite.db create mode 100644 storage/sqlite/sqlite.db diff --git a/.env-example b/.env-example index 914b654..bcec21f 100644 --- a/.env-example +++ b/.env-example @@ -48,7 +48,7 @@ POSTGRES_SSL_MODE=disable POSTGRES_TIMEZONE=America/Argentina/Buenos_Aires #_____ SQLITE _____# -SQLITE_DB_PATH=storage/sqlite.db +SQLITE_DB_PATH=storage/sqlite/sqlite.db ####################################### ###### CACHE ###### diff --git a/storage/sqlite.db b/storage/sqlite.db deleted file mode 100644 index b10cc175afc8052a3eb4ebb5d212bfce5a96b1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 Date: Sun, 27 Oct 2024 10:27:54 -0500 Subject: [PATCH 2/4] session cookie destroy --- .gitignore | 1 + controllers/authentication.go | 24 ++++++++++++++++++++++-- routes.go | 3 +++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8d4682e..84146d5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ logs/* tls/* !tls/.gitkeep .DS_Store +storage/sqlite/* diff --git a/controllers/authentication.go b/controllers/authentication.go index 25c7b31..9e7e940 100644 --- a/controllers/authentication.go +++ b/controllers/authentication.go @@ -425,8 +425,28 @@ func SetNewPassword(c *core.Context) *core.Response { } func Signout(c *core.Context) *core.Response { - tokenRaw := c.GetHeader("Authorization") - token := strings.TrimSpace(strings.Replace(tokenRaw, "Bearer", "", 1)) + + // check if template engine is enable + TemplateEnableStr := os.Getenv("TEMPLATE_ENABLE") + if TemplateEnableStr == "" { + TemplateEnableStr = "false" + } + TemplateEnable, _ := strconv.ParseBool(TemplateEnableStr) + + token := "" + + if TemplateEnable { + // get cookie + usercookie, err := c.GetCookie() + if err != nil { + + } + token = usercookie.Token + } else { + tokenRaw := c.GetHeader("Authorization") + token = strings.TrimSpace(strings.Replace(tokenRaw, "Bearer", "", 1)) + } + if token == "" { return c.Response.SetStatusCode(http.StatusUnauthorized).Json(c.MapToJson(map[string]interface{}{ "message": "unauthorized", diff --git a/routes.go b/routes.go index 610fbcb..00f1906 100644 --- a/routes.go +++ b/routes.go @@ -36,6 +36,9 @@ func registerRoutes() { controller.Get("/dashboard", controllers.WelcomeToDashboard, hooks.AuthCheck) + // templates demos + controller.Get("/signout", controllers.Signout) + controller.Get("/appsample", controllers.AppSample, hooks.AuthCheck) controller.Post("/appsample", controllers.AppSample, hooks.AuthCheck) From 80520260c9a9edd820959556c8d7afc75c774501 Mon Sep 17 00:00:00 2001 From: Zeni Kim Date: Sun, 27 Oct 2024 12:55:12 -0500 Subject: [PATCH 3/4] detail table --- controllers/themedemo.go | 38 ++++++++++++++++++- .../templates/custom_theme_contentpage.html | 3 ++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/controllers/themedemo.go b/controllers/themedemo.go index 22ba5a5..f3699da 100644 --- a/controllers/themedemo.go +++ b/controllers/themedemo.go @@ -642,7 +642,8 @@ func Themecontent(c *core.Context) *core.Response { // first, include all compoments type templateData struct { - ContentTable components.ContentTable + ContentTable components.ContentTable + ContentTabledetail components.ContentTabledetail } // TABLES @@ -686,6 +687,34 @@ func Themecontent(c *core.Context) *core.Response { allTd = append(allTd, vals) } + // for td items in table detail + var allTdetail []components.ContentTabledetailTD + // table detail + var thd components.ContentTabledetailTD + thd.Caption = "Continent" + thd.Value = "Asia" + allTdetail = append(allTdetail, thd) + thd.Caption = "Country" + thd.Value = "South Korea" + allTdetail = append(allTdetail, thd) + thd.Caption = "Capital" + thd.Value = "Seoul" + allTdetail = append(allTdetail, thd) + thd.Caption = "Details" + thd.ValueType = "href" // column type href + thd.Value = components.ContentHref{ + Text: "edit", + Link: "#", + } + allTdetail = append(allTdetail, thd) + thd.Caption = "Notifications" + thd.ValueType = "badge" // column type href + thd.Value = components.ContentBadge{ + Text: "success", + TypeClass: "success", + } + allTdetail = append(allTdetail, thd) + // now fill data of the components tmplData := templateData{ ContentTable: components.ContentTable{ @@ -693,7 +722,14 @@ func Themecontent(c *core.Context) *core.Response { AllTH: allTh, AllTD: allTd, }, + ContentTabledetail: components.ContentTabledetail{ + ID: "table_demodetail", + Title: "Sample table detail", + //HeadClass: "table-warning", + AllTD: allTdetail, + }, } + return c.Response.Template("custom_theme_contentpage.html", tmplData) } else { diff --git a/storage/templates/custom_theme_contentpage.html b/storage/templates/custom_theme_contentpage.html index e1d71e9..a0f29cf 100644 --- a/storage/templates/custom_theme_contentpage.html +++ b/storage/templates/custom_theme_contentpage.html @@ -8,6 +8,9 @@
{{template "content_table" .ContentTable}}
+
+ {{template "content_tabledetail" .ContentTabledetail}} +
{{template "page_footer"}} From 801c5c107f5c8e750bc00421bb7729cc6a5da677 Mon Sep 17 00:00:00 2001 From: Zeni Kim Date: Mon, 28 Oct 2024 11:34:54 -0500 Subject: [PATCH 4/4] add sample graph --- .env-example | 1 + controllers/themedemo.go | 21 +++++++++++++++---- go.mod | 7 ++++++- go.sum | 12 +++++++---- .../templates/custom_theme_contentpage.html | 8 ++++++- 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/.env-example b/.env-example index bcec21f..ded2eab 100644 --- a/.env-example +++ b/.env-example @@ -8,6 +8,7 @@ App_HTTP_HOST=localhost App_HTTP_PORT=8080 App_USE_HTTPS=false App_USE_LETSENCRYPT=false +App_USE_CORESERVICES=false APP_LETSENCRYPT_EMAIL=mail@example.com App_HTTPS_HOSTS=example.com, www.example.com App_REDIRECT_HTTP_TO_HTTPS=false diff --git a/controllers/themedemo.go b/controllers/themedemo.go index f3699da..bbde3c6 100644 --- a/controllers/themedemo.go +++ b/controllers/themedemo.go @@ -6,6 +6,7 @@ package controllers import ( "fmt" + "math/rand/v2" "os" "strconv" @@ -644,6 +645,7 @@ func Themecontent(c *core.Context) *core.Response { type templateData struct { ContentTable components.ContentTable ContentTabledetail components.ContentTabledetail + ContentGraph components.ContentGraph } // TABLES @@ -715,6 +717,12 @@ func Themecontent(c *core.Context) *core.Response { } allTdetail = append(allTdetail, thd) + // random values for pie + one := rand.IntN(50) + two := rand.IntN(50) + three := rand.IntN(50) + valuesgraph := fmt.Sprintf("%d|%d|%d", one, two, three) + // now fill data of the components tmplData := templateData{ ContentTable: components.ContentTable{ @@ -723,10 +731,15 @@ func Themecontent(c *core.Context) *core.Response { AllTD: allTd, }, ContentTabledetail: components.ContentTabledetail{ - ID: "table_demodetail", - Title: "Sample table detail", - //HeadClass: "table-warning", - AllTD: allTdetail, + ID: "table_demodetail", + Title: "Sample table detail", + HeadClass: "table-warning", + AllTD: allTdetail, + }, + ContentGraph: components.ContentGraph{ + Graph: "pie", + Labels: "Berlin|Paris|Venecia", + Values: valuesgraph, }, } diff --git a/go.mod b/go.mod index 2243d4d..6f6869e 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module git.smarteching.com/goffee/cup replace ( + git.smarteching.com/goffee/core => ../core + git.smarteching.com/goffee/cup/config => ./config git.smarteching.com/goffee/cup/handlers => ./handlers git.smarteching.com/goffee/cup/middlewares => ./middlewares @@ -18,6 +20,7 @@ require ( ) require ( + git.smarteching.com/zeni/go-chart/v2 v2.1.4 // indirect github.com/SparkPost/gosparkpost v0.2.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect @@ -26,6 +29,7 @@ require ( github.com/go-ozzo/ozzo-validation v3.6.0+incompatible // indirect github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/harranali/mailing v1.2.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect @@ -42,8 +46,9 @@ require ( github.com/sendgrid/rest v2.6.9+incompatible // indirect github.com/sendgrid/sendgrid-go v3.12.0+incompatible // indirect golang.org/x/crypto v0.11.0 // indirect + golang.org/x/image v0.21.0 // indirect golang.org/x/net v0.10.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/text v0.19.0 // indirect gorm.io/driver/mysql v1.5.1 // indirect gorm.io/driver/postgres v1.5.2 // indirect gorm.io/driver/sqlite v1.5.2 // indirect diff --git a/go.sum b/go.sum index e052570..fe35bfa 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.smarteching.com/goffee/core v1.7.3 h1:GlZ7B/QwAQ6eSQcYBtqlglZoqA7tFYiXqvV2z27xuQY= -git.smarteching.com/goffee/core v1.7.3/go.mod h1:QQNIHVN6qjJBtq42WCQMrLYN9oFE3wm26SLU8ZxNTec= +git.smarteching.com/zeni/go-chart/v2 v2.1.4 h1:pF06+F6eqJLIG8uMiTVPR5TygPGMjM/FHMzTxmu5V/Q= +git.smarteching.com/zeni/go-chart/v2 v2.1.4/go.mod h1:b3ueW9h3pGGXyhkormZAvilHaG4+mQti+bMNPdQBeOQ= github.com/SparkPost/gosparkpost v0.2.0 h1:yzhHQT7cE+rqzd5tANNC74j+2x3lrPznqPJrxC1yR8s= github.com/SparkPost/gosparkpost v0.2.0/go.mod h1:S9WKcGeou7cbPpx0kTIgo8Q69WZvUmVeVzbD+djalJ4= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= @@ -35,6 +35,8 @@ github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3a github.com/gogs/chardet v0.0.0-20150115103509-2404f7772561/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -91,14 +93,16 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= +golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/storage/templates/custom_theme_contentpage.html b/storage/templates/custom_theme_contentpage.html index a0f29cf..67b35f9 100644 --- a/storage/templates/custom_theme_contentpage.html +++ b/storage/templates/custom_theme_contentpage.html @@ -9,7 +9,13 @@ {{template "content_table" .ContentTable}}
- {{template "content_tabledetail" .ContentTabledetail}} +
+

Pie chart

+ {{template "content_graph" .ContentGraph}} +
+
+ {{template "content_tabledetail" .ContentTabledetail}} +