better default admin creation
This commit is contained in:
2 files changed
+67
-42
No files matched your search
@@ -26,6 +26,62 @@ var studentCollection *mongo.Collection = database.OpenCollection(database.Clien
|
|||||||
var contactCollection *mongo.Collection = database.OpenCollection(database.Client, "contacts")
|
var contactCollection *mongo.Collection = database.OpenCollection(database.Client, "contacts")
|
||||||
var adminCollection *mongo.Collection = database.OpenCollection(database.Client, "admins")
|
var adminCollection *mongo.Collection = database.OpenCollection(database.Client, "admins")
|
||||||
|
|
||||||
|
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() models.Admin {
|
||||||
|
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
|
||||||
|
firstname = strings.ReplaceAll(firstname, "\n", "")
|
||||||
|
lastname = strings.ReplaceAll(lastname, "\n", "")
|
||||||
|
email = strings.ReplaceAll(email, "\n", "")
|
||||||
|
|
||||||
|
var admin models.Admin
|
||||||
|
admin.FirstName = strings.TrimSuffix(firstname, "\n")
|
||||||
|
admin.LastName = strings.TrimSuffix(lastname, "\n")
|
||||||
|
admin.Email = strings.TrimSuffix(email, "\n")
|
||||||
|
|
||||||
|
admin.SchoolEmail = admin.GenerateSchoolEmail()
|
||||||
|
|
||||||
|
pass := strings.TrimSuffix(string(password), "\n")
|
||||||
|
admin.Password = admin.HashPassword(pass)
|
||||||
|
admin.TempPassword = false
|
||||||
|
|
||||||
|
var aid string
|
||||||
|
for {
|
||||||
|
aid = GenerateID(6)
|
||||||
|
if ValidateID(aid) == true {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
admin.AID = aid
|
||||||
|
|
||||||
|
admin.Created_at, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
|
||||||
|
admin.Updated_at, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
|
||||||
|
admin.ID = primitive.NewObjectID()
|
||||||
|
|
||||||
|
return admin
|
||||||
|
}
|
||||||
|
|
||||||
func NewSystem() {
|
func NewSystem() {
|
||||||
count, err := adminCollection.CountDocuments(context.Background(), bson.D{})
|
count, err := adminCollection.CountDocuments(context.Background(), bson.D{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -34,52 +90,21 @@ func NewSystem() {
|
|||||||
|
|
||||||
if count == 0 {
|
if count == 0 {
|
||||||
fmt.Println("Admin account setup...")
|
fmt.Println("Admin account setup...")
|
||||||
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
|
|
||||||
firstname = strings.ReplaceAll(firstname, "\n", "")
|
|
||||||
lastname = strings.ReplaceAll(lastname, "\n", "")
|
|
||||||
email = strings.ReplaceAll(email, "\n", "")
|
|
||||||
|
|
||||||
var admin models.Admin
|
|
||||||
admin.FirstName = strings.TrimSuffix(firstname, "\n")
|
|
||||||
admin.LastName = strings.TrimSuffix(lastname, "\n")
|
|
||||||
admin.Email = strings.TrimSuffix(email, "\n")
|
|
||||||
|
|
||||||
admin.SchoolEmail = admin.GenerateSchoolEmail()
|
|
||||||
|
|
||||||
pass := strings.TrimSuffix(string(password), "\n")
|
|
||||||
admin.Password = admin.HashPassword(pass)
|
|
||||||
admin.TempPassword = false
|
|
||||||
|
|
||||||
var aid string
|
|
||||||
for {
|
for {
|
||||||
aid = GenerateID(6)
|
defaultAdmin := CreateDefaultAdmin()
|
||||||
if ValidateID(aid) == true {
|
|
||||||
|
if confirm("Are the above credentials correct?") {
|
||||||
|
_, insertErr := adminCollection.InsertOne(context.Background(), defaultAdmin)
|
||||||
|
if insertErr != nil {
|
||||||
|
log.Printf("Failed to create an admin\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Successfully created default admin")
|
||||||
|
log.Printf("Your default admin ID is %s", defaultAdmin.AID)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
admin.AID = aid
|
|
||||||
|
|
||||||
admin.Created_at, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
|
|
||||||
admin.Updated_at, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
|
|
||||||
admin.ID = primitive.NewObjectID()
|
|
||||||
|
|
||||||
_, insertErr := adminCollection.InsertOne(context.Background(), admin)
|
|
||||||
if insertErr != nil {
|
|
||||||
log.Printf("Failed to create an admin\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Printf("Successfully created default admin")
|
|
||||||
log.Printf("Your default admin ID is %s", aid)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user