From d1c0ccfcb84f1b8778e38b027a333d03e1f4ae9e Mon Sep 17 00:00:00 2001 From: jloup Date: Sun, 13 May 2018 15:02:48 +0100 Subject: Account information panel. --- api/routes.go | 15 +++++++++++++++ api/user.go | 59 +++++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 54 insertions(+), 20 deletions(-) (limited to 'api') diff --git a/api/routes.go b/api/routes.go index d0e8cec..404f821 100644 --- a/api/routes.go +++ b/api/routes.go @@ -48,6 +48,13 @@ var Groups = []Group{ {"GET", []gin.HandlerFunc{GetPortfolio}, "/:name/portfolio"}, }, }, + { + "/user", + []Middleware{JwtAuth, UserConfirmed, OtpAuth}, + []Route{ + {"GET", []gin.HandlerFunc{UserAccount}, "/account"}, + }, + }, } func Signup(c *gin.Context) { @@ -169,3 +176,11 @@ func ConfirmEmail(c *gin.Context) { RunQuery(query, c) } + +func UserAccount(c *gin.Context) { + query := &UserAccountQuery{} + + query.In.User = GetUser(c) + + RunQuery(query, c) +} diff --git a/api/user.go b/api/user.go index 2848696..a2737fd 100644 --- a/api/user.go +++ b/api/user.go @@ -16,6 +16,26 @@ const ( VALID_EMAIL_REGEX = `(?i)^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$` ) +func UserConfirmed(c *gin.Context) *Error { + user, exists := c.Get("user") + + if !exists { + return &Error{NotAuthorized, "not authorized", fmt.Errorf("no user key in context")} + } + + if user.(db.User).Status != db.Confirmed { + return &Error{UserNotConfirmed, "user awaiting admin validation", fmt.Errorf("user '%v' not confirmed", user)} + } + + return nil +} + +func GetUser(c *gin.Context) db.User { + user, _ := c.Get("user") + + return user.(db.User) +} + func IsValidEmailAddress(email string) bool { r := regexp.MustCompile(VALID_EMAIL_REGEX) @@ -142,26 +162,6 @@ func (q SigninQuery) Run() (interface{}, *Error) { return SignResult{token}, nil } -func UserConfirmed(c *gin.Context) *Error { - user, exists := c.Get("user") - - if !exists { - return &Error{NotAuthorized, "not authorized", fmt.Errorf("no user key in context")} - } - - if user.(db.User).Status != db.Confirmed { - return &Error{UserNotConfirmed, "user awaiting admin validation", fmt.Errorf("user '%v' not confirmed", user)} - } - - return nil -} - -func GetUser(c *gin.Context) db.User { - user, _ := c.Get("user") - - return user.(db.User) -} - type ConfirmEmailQuery struct { In struct { Token string @@ -214,3 +214,22 @@ func (q ConfirmEmailQuery) Run() (interface{}, *Error) { return nil, nil } + +type UserAccountQuery struct { + In struct { + User db.User + } + Out struct { + Email string `json:"email"` + } +} + +func (q UserAccountQuery) ValidateParams() *Error { + return nil +} + +func (q UserAccountQuery) Run() (interface{}, *Error) { + q.Out.Email = q.In.User.Email + + return q.Out, nil +} -- cgit v1.2.3