/
routes_check_token.go
64 lines (52 loc) · 1.56 KB
/
routes_check_token.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package routes
import (
"encoding/json"
"net/http"
"github.com/bcpitutor/ostiki/middleware"
"github.com/gin-gonic/gin"
"golang.org/x/oauth2"
)
type userInfo struct {
Id string `json:"id"`
Email string `json:"email"`
VerifiedEmail string `json:"verifiedEmail"`
Picture string `json:"picture"`
Hd string `json:"hd"`
}
type RBody struct {
AccessToken string `json:"accessToken"`
Expire string `json:"expire"`
RefreshToken string `json:"refreshToken"`
TokenType string `json:"tokenType"`
IdToken string `json:"idToken"`
UserInfo *userInfo `json:"userInfo,omitempty"`
}
func CheckToken(c *gin.Context, vars middleware.GinHandlerVars) {
logger := vars.Logger
var requestBody RBody
if err := json.NewDecoder(c.Request.Body).Decode(&requestBody); err != nil {
logger.Sugar().Errorf("Error decoding request body: %s", err)
}
var tokenControl oauth2.Token
tokenControl.AccessToken = requestBody.AccessToken
if tokenControl.Valid() {
// TODO: handle on the client side for keeping things as a shell env or encrypted file etc.
c.JSON(http.StatusOK, gin.H{
"message": requestBody,
})
} else {
// TODO: redirect url and client need to be detected...
c.JSON(http.StatusTemporaryRedirect, gin.H{
"message": "Redirecting to the login page",
})
}
}
func RenewToken(c *gin.Context, vars middleware.GinHandlerVars) {
logger := vars.Logger
logger.Info("RenewToken")
newToken, _ := c.Get("newToken")
c.JSON(http.StatusOK, gin.H{
"status": "success",
"newToken": newToken,
})
}