From 95143657ca1e4bd5630f6773a9d111ae22517659 Mon Sep 17 00:00:00 2001 From: "Schmitt, Max" Date: Thu, 2 Nov 2017 14:37:07 +0100 Subject: [PATCH] improved oAuth logic --- README.md | 1 + handlers/handlers.go | 11 ++++------- static/public/favicon.ico | Bin 3870 -> 15086 bytes static/src/App/App.js | 12 ++++++++---- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1ca2744..ea8484e 100644 --- a/README.md +++ b/README.md @@ -138,5 +138,6 @@ Next changes sorted by priority - [ ] Refactore Unit Tests - [ ] Performance optimization - [ ] Add ability to track the visitors (Referrer, maybe also live) +- [ ] Create Makefile for building everything - [ ] Test docker-compose installation - [ ] Provide image on the docker hub \ No newline at end of file diff --git a/handlers/handlers.go b/handlers/handlers.go index 1fb2524..a84de46 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -29,7 +29,7 @@ type Handler struct { // URLUtil is used to help in- and outgoing requests for json // un- and marshalling type URLUtil struct { - URL string + URL string `binding:"required"` } type oAuthUser struct { @@ -97,7 +97,6 @@ func (h *Handler) randToken() string { } func (h *Handler) handleGoogleAuth(c *gin.Context) { - // Handle the exchange code to initiate a transport. session := sessions.Default(c) retrievedState := session.Get("state") if retrievedState != c.Query("state") { @@ -141,15 +140,13 @@ func (h *Handler) handleGoogleLogin(c *gin.Context) { c.Redirect(http.StatusTemporaryRedirect, h.oAuthConf.AuthCodeURL(state)) } -func (h *Handler) handleGoogleCallback(ctx *gin.Context) { - ctx.JSON(http.StatusOK, gin.H{"Hello": "from private", "user": ctx.MustGet("user").(oAuthUser)}) +func (h *Handler) handleGoogleCallback(c *gin.Context) { + c.JSON(http.StatusOK, gin.H{"Hello": "from private", "user": c.MustGet("user").(oAuthUser)}) } // handleCreate handles requests to create an entry func (h *Handler) handleCreate(c *gin.Context) { - var data struct { - URL string - } + var data URLUtil err := c.ShouldBind(&data) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) diff --git a/static/public/favicon.ico b/static/public/favicon.ico index a11777cc471a4344702741ab1c8a588998b1311a..f5898e23570d86648885a73033ffbeb691980704 100644 GIT binary patch literal 15086 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/static/src/App/App.js b/static/src/App/App.js index 0c92973..7095343 100644 --- a/static/src/App/App.js +++ b/static/src/App/App.js @@ -22,12 +22,16 @@ class ContainerExampleContainer extends Component { } onOAuthClose = () => { - this.setState({ open: false }) + this.setState({ open: true }) } onAuthClick = () => { console.log("onAuthClick") - window.open("/api/v1/login", "", "width=600,height=400") + var wwidth = 400, + wHeight = 500; + var wLeft = (window.screen.width / 2) - (wwidth / 2); + var wTop = (window.screen.height / 2) - (wHeight / 2); + window.open("/api/v1/login", "", `width=${wwidth}, height=${wHeight}, top=${wTop}, left=${wLeft}`) } render() { @@ -49,10 +53,10 @@ class ContainerExampleContainer extends Component { return ( - OAuth2 Authentication + Authentication -

Currently you are only able to use Google as authentification service:

+

Currently you are only able to use Google as authentication service: