Files
2023-09-28 21:42:58 -07:00

84 lines
2.0 KiB
Go

package util
import (
"bufio"
"fmt"
"log"
"net/mail"
"os"
"strings"
"time"
"github.com/howeyc/gopass"
"go.mongodb.org/mongo-driver/bson/primitive"
"github.com/SowinskiBraeden/DeviceBookingAPI/databases"
"github.com/SowinskiBraeden/DeviceBookingAPI/models"
)
func ValidMailAddress(address string) (string, bool) {
addr, err := mail.ParseAddress(address)
if err != nil {
return "", false
}
return addr.Address, true
}
func Confirm(s string) bool {
r := bufio.NewReader(os.Stdin)
fmt.Printf("%s [y/n]: ", s)
res, err := r.ReadString('\n')
if err != nil {
log.Fatal(err)
}
return strings.ToLower(strings.TrimSpace(res))[0] == 'y'
}
func CreateDefaultAdmin(DB databases.UserDatabase) models.User {
fmt.Println()
reader := bufio.NewReader(os.Stdin)
fmt.Print("First Name: ")
firstname, _ := reader.ReadString('\n')
fmt.Print("Last Name: ")
lastname, _ := reader.ReadString('\n')
fmt.Print("Email: ")
email, _ := reader.ReadString('\n')
fmt.Print("Password: ")
password, _ := gopass.GetPasswd()
// Clear values of new lines and enter characters
firstname = strings.ReplaceAll(firstname, "\n", "")
lastname = strings.ReplaceAll(lastname, "\n", "")
email = strings.ReplaceAll(email, "\n", "")
firstname = strings.ReplaceAll(firstname, "\r", "")
lastname = strings.ReplaceAll(lastname, "\r", "")
email = strings.ReplaceAll(email, "\r", "")
var admin models.User
admin.Details.FirstName = firstname
admin.Details.LastName = lastname
admin.Details.Email = email
pass := strings.TrimSuffix(string(password), "\n")
admin.Details.Password = admin.HashPassword(pass)
admin.Details.TempPassword = false
var aid string
for {
aid = GenerateID(6)
if ValidateID(aid, DB) {
break
}
}
admin.Details.UID = aid
admin.Details.UserType = models.TypeSuperUser
admin.Details.Created_at, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
admin.Details.Updated_at, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
admin.ID = primitive.NewObjectID().Hex()
return admin
}