prepare user system
This commit is contained in:
13 files changed
+470
-18
No files matched your search
@@ -0,0 +1,83 @@
|
||||
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
|
||||
}
|
||||
Reference in new issue
Block a user