From c3821df233523ab715fdf06d54c142394411c968 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Tue, 9 Jul 2024 11:31:08 +0530 Subject: added logo/signature upload routes --- user/controller.go | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'user/controller.go') 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 -- cgit v1.2.3