aboutsummaryrefslogtreecommitdiff
path: root/user/controller.go
diff options
context:
space:
mode:
Diffstat (limited to 'user/controller.go')
-rw-r--r--user/controller.go92
1 files changed, 92 insertions, 0 deletions
diff --git a/user/controller.go b/user/controller.go
index 15061cc..1dc85da 100644
--- a/user/controller.go
+++ b/user/controller.go
@@ -20,6 +20,8 @@ package user
import (
e "vidhukant.com/openbills/errors"
"github.com/gin-gonic/gin"
+ "github.com/google/uuid"
+ "github.com/spf13/viper"
"net/http"
)
@@ -51,6 +53,96 @@ func handleGetUser (ctx *gin.Context) {
})
}
+func handleUploadLogo(ctx *gin.Context) {
+ var user User
+
+ uId, ok := ctx.Get("UserID")
+ if !ok {
+ ctx.Error(e.ErrUnauthorized)
+ ctx.Abort()
+ return
+ }
+
+ userId := uId.(uint)
+ user.ID = userId
+
+ // TODO: handle potential errors
+ file, err := ctx.FormFile("logo")
+ if err != nil {
+ ctx.Error(err)
+ ctx.Abort()
+ return
+ }
+
+ dest := uuid.New().String()
+
+ // TODO: handle potential errors
+ err = ctx.SaveUploadedFile(file, viper.GetString("data.upload_dir") + dest)
+ if err != nil {
+ ctx.Error(err)
+ ctx.Abort()
+ return
+ }
+
+ // TODO: delete old file (if any)
+ err = user.update(map[string]interface{}{"logo_file": dest})
+ if err != nil {
+ ctx.Error(err)
+ ctx.Abort()
+ return
+ }
+
+ ctx.JSON(http.StatusOK, gin.H{
+ "message": "success",
+ })
+}
+
+func handleUploadSignature(ctx *gin.Context) {
+ var user User
+
+ uId, ok := ctx.Get("UserID")
+ if !ok {
+ ctx.Error(e.ErrUnauthorized)
+ ctx.Abort()
+ return
+ }
+
+ userId := uId.(uint)
+ user.ID = userId
+
+ // TODO: handle potential errors
+ file, err := ctx.FormFile("signature")
+ if err != nil {
+ ctx.Error(err)
+ ctx.Abort()
+ return
+ }
+
+ dest := uuid.New().String()
+
+ // TODO: handle potential errors
+ err = ctx.SaveUploadedFile(file, viper.GetString("data.upload_dir") + dest)
+ if err != nil {
+ ctx.Error(err)
+ ctx.Abort()
+ return
+ }
+
+ // TODO: delete old file (if any)
+ err = user.update(map[string]interface{}{"signature_file": dest})
+ if err != nil {
+ ctx.Error(err)
+ ctx.Abort()
+ return
+ }
+
+ ctx.JSON(http.StatusOK, gin.H{
+ "message": "success",
+ })
+}
+
+// TODO: fix this stuff
+// also add some kind of 2 factor verification
func handleDelUser (ctx *gin.Context) {
id := uint(1) // get from JWT