gogjango/gjango

View on GitHub
request/signup.go

Summary

Maintainability
A
0 mins
Test Coverage
package request

import (
    "net/http"

    "github.com/gin-gonic/gin"
    "github.com/gogjango/gjango/apperr"
)

// EmailSignup contains the user signup request
type EmailSignup struct {
    Email           string `json:"email" binding:"required,min=3,email"`
    Password        string `json:"password" binding:"required,min=8"`
    PasswordConfirm string `json:"password_confirm" binding:"required"`
}

// AccountSignup validates user signup request
func AccountSignup(c *gin.Context) (*EmailSignup, error) {
    var r EmailSignup
    if err := c.ShouldBindJSON(&r); err != nil {
        apperr.Response(c, err)
        return nil, err
    }
    if r.Password != r.PasswordConfirm {
        err := apperr.New(http.StatusBadRequest, "passwords do not match")
        c.AbortWithStatusJSON(http.StatusBadRequest, err)
        return nil, err
    }
    return &r, nil
}

// MobileSignup contains the user signup request with a mobile number
type MobileSignup struct {
    CountryCode string `json:"country_code" binding:"required,min=2"`
    Mobile      string `json:"mobile" binding:"required"`
}

// Mobile validates user signup request via mobile
func Mobile(c *gin.Context) (*MobileSignup, error) {
    var r MobileSignup
    if err := c.ShouldBindJSON(&r); err != nil {
        apperr.Response(c, err)
        return nil, err
    }
    return &r, nil
}

// MobileVerify contains the user's mobile verification country code, mobile number and verification code
type MobileVerify struct {
    CountryCode string `json:"country_code" binding:"required,min=2"`
    Mobile      string `json:"mobile" binding:"required"`
    Code        string `json:"code" binding:"required"`
    Signup      bool   `json:"signup" binding:"required"`
}

// AccountVerifyMobile validates user mobile verification
func AccountVerifyMobile(c *gin.Context) (*MobileVerify, error) {
    var r MobileVerify
    if err := c.ShouldBindJSON(&r); err != nil {
        return nil, err
    }
    return &r, nil
}