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 UserIsAdmin(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).Role != db.RoleAdmin {
+ return &Error{NotAuthorized, "not authorized", fmt.Errorf("user '%v' is not admin", 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)
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
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
+}