You've already forked golang-base-project
Initial commit
This commit is contained in:
71
routes/activate.go
Normal file
71
routes/activate.go
Normal file
@ -0,0 +1,71 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/uberswe/golang-base-project/models"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (controller Controller) Activate(c *gin.Context) {
|
||||
activationError := "Please provide a valid activation token"
|
||||
activationSuccess := "Account activated. You may now proceed to login to your account."
|
||||
pd := PageData{
|
||||
Title: "Activate",
|
||||
IsAuthenticated: isAuthenticated(c),
|
||||
}
|
||||
token := c.Param("token")
|
||||
activationToken := models.Token{
|
||||
Value: token,
|
||||
Type: models.TokenUserActivation,
|
||||
}
|
||||
|
||||
res := controller.db.Where(&activationToken).First(&activationToken)
|
||||
if res.Error != nil {
|
||||
log.Println(res.Error)
|
||||
pd.Messages = append(pd.Messages, Message{
|
||||
Type: "error",
|
||||
Content: activationError,
|
||||
})
|
||||
c.HTML(http.StatusBadRequest, "activate.html", pd)
|
||||
return
|
||||
}
|
||||
|
||||
user := models.User{}
|
||||
user.ID = uint(activationToken.ModelID)
|
||||
|
||||
res = controller.db.Where(&user).First(&user)
|
||||
if res.Error != nil {
|
||||
log.Println(res.Error)
|
||||
pd.Messages = append(pd.Messages, Message{
|
||||
Type: "error",
|
||||
Content: activationError,
|
||||
})
|
||||
c.HTML(http.StatusBadRequest, "activate.html", pd)
|
||||
return
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
user.ActivatedAt = &now
|
||||
|
||||
res = controller.db.Save(&user)
|
||||
if res.Error != nil {
|
||||
log.Println(res.Error)
|
||||
pd.Messages = append(pd.Messages, Message{
|
||||
Type: "error",
|
||||
Content: activationError,
|
||||
})
|
||||
c.HTML(http.StatusBadRequest, "activate.html", pd)
|
||||
return
|
||||
}
|
||||
|
||||
// We don't need to check for an error here, even if it's not deleted it will not really affect application logic
|
||||
controller.db.Delete(&activationToken)
|
||||
|
||||
pd.Messages = append(pd.Messages, Message{
|
||||
Type: "success",
|
||||
Content: activationSuccess,
|
||||
})
|
||||
c.HTML(http.StatusOK, "activate.html", pd)
|
||||
}
|
Reference in New Issue
Block a user