Files
spurtcms/controllers/settings_controller.go

307 lines
7.9 KiB
Go

package controllers
import (
"encoding/json"
"fmt"
"log"
"os"
storagecontroller "spurt-cms/storage-controller"
"strconv"
"strings"
"sync"
"github.com/gin-gonic/gin"
"github.com/spurtcms/team"
csrf "github.com/utrack/gin-csrf"
"golang.org/x/crypto/bcrypt"
)
func SettingView(c *gin.Context) {
menu := NewMenuController(c)
// fmt.Println("valmenemodule",menu.TblModule)
// for _,val:= range menu.TblModule{
// if val.ModuleName=="Settings"{
// for _,val2:=range val.SubModule{
// fmt.Println("valmenemodule",val2)
// }
// }
// }
translate, _ := TranslateHandler(c)
c.HTML(200, "settings.html", gin.H{"Menu": menu, "linktitle": "Settings", "csrf": csrf.GetToken(c), "translate": translate, "HeadTitle": translate.Settings, "title": "Settings"})
}
func MyProfile(c *gin.Context) {
users, _, err := NewTeamWP.GetUserById(c.GetInt("userid"), []int{})
if err != nil {
ErrorLog.Printf("get myprofile error : %s", err)
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
}
var first = users.FirstName
var last = users.LastName
var firstn = strings.ToUpper(first[:1])
var lastn string
if users.LastName != "" {
lastn = strings.ToUpper(last[:1])
}
if users.ProfileImagePath != "" {
if users.StorageType == "local" {
users.ProfileImagePath = "/" + users.ProfileImagePath
} else if users.StorageType == "aws" {
users.ProfileImagePath = "/image-resize?name=" + users.ProfileImagePath
}
}
var Name = firstn + lastn
users.NameString = Name
Role, err := NewRole.GetRoleById(users.RoleId, "")
if err != nil {
log.Println(err)
}
translate, _ := TranslateHandler(c)
menu := NewMenuController(c)
Folder, File, Media, _, _ := GetMedia()
selectedtype, _ := GetSelectedType()
c.HTML(200, "myaccount.html", gin.H{"Menu": menu, "title": "My Account", "linktitle": "My Account", "csrf": csrf.GetToken(c), "HeadTitle": translate.Myprofile, "translate": translate, "user": users, "rolename": Role.Name, "SettingsHead": true, "Myprofmenu": true, "Tooltiptitle": translate.Setting.Myprofiletooltip, "Folder": Folder, "File": File, "Media": Media, "StorageType": selectedtype.SelectedType})
}
func ChangePassword(c *gin.Context) {
translate, _ := TranslateHandler(c)
menu := NewMenuController(c)
c.HTML(200, "security.html", gin.H{"Menu": menu, "title": "Security", "linktitle": "Security", "csrf": csrf.GetToken(c), "translate": translate, "HeadTitle": translate.Setting.Security, "SettingsHead": true, "Changepassmenu": true, "Tooltiptitle": translate.Setting.Securitytooltip})
}
func UpdateProfile(c *gin.Context) {
if c.PostForm("user_fname") == "" || c.PostForm("user_email") == "" || c.PostForm("user_mob") == "" || c.PostForm("user_name") == "" {
c.SetCookie("Alert-msg", "Pleaseenterthemandatoryfields", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
var (
imgPath, imgName string
err error
)
storageType, err := GetSelectedType()
if err != nil {
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
imagedata := c.PostForm("crop_data")
if strings.Contains(imagedata, "data:image/jpeg;base64") || strings.Contains(imagedata, "data:image/png;base64") || strings.Contains(imagedata, "data:image/svg+xml;base64") {
tenantDetails, err := NewTeam.GetTenantDetails(TenantId)
if err != nil {
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
if storageType.SelectedType == "aws" {
var (
tempString, imageName string
imageByte []byte
)
imageName, tempString, imageByte, err = ConvertBase64toByte(imagedata, "user")
if err != nil {
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
tempString = tenantDetails.S3FolderName + tempString
err = storagecontroller.UploadCropImageS3(imageName, tempString, imageByte)
if err != nil {
c.SetCookie("Alert-msg", "ERRORAWScredentialsnotfound", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
imgPath = tempString
imgName = imageName
} else if storageType.SelectedType == "local" {
var tempImgPath, imageName string
imageName, tempImgPath, err = ConvertBase64(imagedata, "storage/user")
if err != nil {
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
imgPath = "/" + tempImgPath
imgName = imageName
}
} else {
imgPath = imagedata
}
userid, _ := strconv.Atoi(c.PostForm("id"))
Newuser := team.TeamCreate{
FirstName: c.PostForm("user_fname"),
LastName: c.PostForm("user_lname"),
Email: c.PostForm("user_email"),
MobileNo: c.PostForm("user_mob"),
Username: c.PostForm("user_name"),
ProfileImage: imgName,
ProfileImagePath: imgPath,
StorageType: storageType.SelectedType,
}
err = NewTeamWP.UpdateMyUser(Newuser, userid, TenantId)
if err != nil {
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
return
}
c.SetCookie("get-toast", "My Profile Updated Successfully", 3600, "", "", false, false)
c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/myprofile/")
}
func UptPassword(c *gin.Context) {
userid := c.GetInt("userid")
pswd := c.PostForm("pass")
cpswd := c.PostForm("cpass")
if pswd == "" && cpswd == "" && pswd != cpswd {
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/changepassword")
return
}
err, _ := NewTeamWP.ChangeYourPassword(pswd, userid, TenantId)
if strings.Contains(fmt.Sprint(err), "given some values is empty") {
c.SetCookie("Alert-msg", "Pleaseenterthemandatoryfields", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/changepassword")
return
} else {
c.SetCookie("get-toast", "Password Updated Successfully", 3600, "", "", false, false)
c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
c.Redirect(301, "/admin/settings/changepassword")
}
id := c.GetInt("userid")
userdet, _, _ := NewTeamWP.GetUserById(id, []int{})
fname := userdet.FirstName
email := userdet.Email
var url_prefix = os.Getenv("BASE_URL")
// if os.Getenv("BASE_URL") != "" {
// url_prefix = os.Getenv("BASE_URL")
// } else {
// url_prefix = os.Getenv("DOMAIN_URL")
// }
data := map[string]interface{}{
"fname": fname,
"admin_logo": url_prefix + "public/img/spurtcms.png",
"fb_logo": url_prefix + "public/img/facebook.png",
"linkedin_logo": url_prefix + "public/img/linkedin.png",
"twitter_logo": url_prefix + "public/img/twitter.png",
}
var wg sync.WaitGroup
wg.Add(1)
Chan := make(chan string, 1)
go ChangePasswordEmail(Chan, &wg, data, email, "Changepassword")
close(Chan)
}
func CheckPassword(c *gin.Context) {
var Password bool
id := c.GetInt("userid")
pswd := c.PostForm("pass")
userdet, _, _ := NewTeamWP.GetUserById(id, []int{})
if strings.Contains(fmt.Sprint(userdet), "given some values is empty") {
json.NewEncoder(c.Writer).Encode(false)
return
}
passerr := bcrypt.CompareHashAndPassword([]byte(userdet.Password), []byte(pswd))
if passerr == bcrypt.ErrMismatchedHashAndPassword {
Password = false
} else {
Password = true
}
c.JSON(200, gin.H{"pass": Password})
}