]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blame - api/routes.go
Password reset.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / routes.go
CommitLineData
7a9e5112 1package api
2
3import (
4 "encoding/base64"
5
6 "github.com/gin-gonic/gin"
7)
8
9type Route struct {
10 Method string
11 Handlers []gin.HandlerFunc
12 Path string
13}
14
15type Group struct {
16 Root string
17 Middlewares []Middleware
18 Routes []Route
19}
20
21var Groups = []Group{
22 {
23 "",
24 nil,
25 []Route{
26 {"POST", []gin.HandlerFunc{Signup}, "/signup"},
27 {"POST", []gin.HandlerFunc{Signin}, "/signin"},
85545aba 28 {"POST", []gin.HandlerFunc{PasswordReset}, "/passwordreset"},
29 {"POST", []gin.HandlerFunc{ChangePassword}, "/changepassword"},
7a9e5112 30 },
31 },
32 {
33 "/otp",
34 []Middleware{JwtAuth, UserConfirmed},
35 []Route{
36 {"GET", []gin.HandlerFunc{OtpEnrollment}, "/enroll"},
37 {"POST", []gin.HandlerFunc{OtpValidate}, "/validate"},
38 },
39 },
40 {
41 "/market",
42 []Middleware{JwtAuth, UserConfirmed, OtpAuth},
43 []Route{
44 {"GET", []gin.HandlerFunc{GetMarketConfig}, "/:name"},
45 {"POST", []gin.HandlerFunc{UpdateMarketConfig}, "/:name/update"},
2f91f20a 46 {"GET", []gin.HandlerFunc{GetMarketBalance}, "/:name/balance"},
7a9e5112 47 },
48 },
49}
50
51func Signup(c *gin.Context) {
52 query := &SignupQuery{}
53
54 query.In.Email = c.PostForm("email")
55 query.In.Password = c.PostForm("password")
56
57 RunQuery(query, c)
58}
59
60func Signin(c *gin.Context) {
61 query := &SigninQuery{}
62
63 query.In.Email = c.PostForm("email")
64 query.In.Password = c.PostForm("password")
65
66 RunQuery(query, c)
67}
68
69func OtpValidate(c *gin.Context) {
70 query := &OtpValidateQuery{}
71
72 query.In.Pass = c.PostForm("pass")
73 query.In.User = GetUser(c)
74 query.In.Claims = GetClaims(c)
75
76 RunQuery(query, c)
77}
78
79func OtpEnrollment(c *gin.Context) {
80 query := &OtpEnrollmentQuery{}
81
82 query.In.User = GetUser(c)
83
84 qrPng, secret, err := query.Run()
85 if err != nil {
86 WriteJsonResponse(ErrorResponse(err.Code, err.UserMessage), c)
87 c.Error(err)
88 return
89 }
90
91 if c.Query("format") == "png" {
92 c.Header("X-OTP-Secret", secret)
93 WriteBinary("image/png", qrPng.Bytes(), c)
94 } else {
95 response := struct {
96 Base64img string `json:"base64img"`
97 OtpSecret string `json:"secret"`
98 }{
99 base64.StdEncoding.EncodeToString(qrPng.Bytes()),
100 secret,
101 }
102
103 WriteJsonResponse(SuccessResponse(response), c)
104 }
105
106}
107
108func GetMarketConfig(c *gin.Context) {
109 query := &MarketConfigQuery{}
110
111 query.In.User = GetUser(c)
112 query.In.Market = c.Param("name")
113
114 RunQuery(query, c)
115}
116
2f91f20a 117func GetMarketBalance(c *gin.Context) {
118 query := &MarketBalanceQuery{}
119
120 query.In.User = GetUser(c)
121 query.In.Market = c.Param("name")
122 query.In.Currency = c.Query("currency")
123
124 RunQuery(query, c)
125}
126
7a9e5112 127func UpdateMarketConfig(c *gin.Context) {
128 query := &UpdateMarketConfigQuery{}
129
130 query.In.User = GetUser(c)
131 query.In.Market = c.Param("name")
132 query.In.Key = c.PostForm("key")
133 query.In.Secret = c.PostForm("secret")
134
135 RunQuery(query, c)
136}
85545aba 137
138func PasswordReset(c *gin.Context) {
139 query := &PasswordResetQuery{}
140
141 query.In.Email = c.PostForm("email")
142
143 RunQuery(query, c)
144}
145
146func ChangePassword(c *gin.Context) {
147 query := &ChangePasswordQuery{}
148
149 query.In.Token = c.PostForm("token")
150 query.In.Password = c.PostForm("password")
151
152 RunQuery(query, c)
153}