Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c05e3a3879 | ||
|
|
fa8acec7a8 | ||
|
|
7ed53fc539 | ||
|
|
315f33b3e7 | ||
|
|
3aa4f72b33 | ||
|
|
2071e94516 |
No files matched your search
@@ -2,5 +2,6 @@ mongoURI=mongodb://localhost:27017
|
|||||||
dbo=school
|
dbo=school
|
||||||
secret=<your 256 bit secret>
|
secret=<your 256 bit secret>
|
||||||
PORT=8000
|
PORT=8000
|
||||||
|
SYSTEM_EMAIL_ADDRESS=<@exampleschoolemail.com>
|
||||||
SYSTEM_EMAIL=<your system email>
|
SYSTEM_EMAIL=<your system email>
|
||||||
SYSTEM_PASSWORD=<your system password>
|
SYSTEM_PASSWORD=<your system password>
|
||||||
@@ -574,7 +574,7 @@ func UpdateStudentAddress(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
// In the case a student gets held back a grade, we need to update their YOG (Year of Graduation)
|
// In the case a student gets held back a grade, we need to update their YOG (Year of Graduation)
|
||||||
func UpdateStudentYOG(c *fiber.Ctx) error {
|
func UpdateStudentYOG(c *fiber.Ctx) error {
|
||||||
var data map[string]string
|
var data map[string]interface{}
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||||
|
|
||||||
if err := c.BodyParser(&data); err != nil {
|
if err := c.BodyParser(&data); err != nil {
|
||||||
@@ -596,7 +596,7 @@ func UpdateStudentYOG(c *fiber.Ctx) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check required fields are included
|
// Check required fields are included
|
||||||
if data["sid"] == "" {
|
if data["sid"] == "" || data["yog"] == nil {
|
||||||
cancel()
|
cancel()
|
||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
||||||
"success": false,
|
"success": false,
|
||||||
@@ -605,7 +605,7 @@ func UpdateStudentYOG(c *fiber.Ctx) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var student models.Student
|
var student models.Student
|
||||||
findErr := studentCollection.FindOne(context.TODO(), bson.M{"schooldata.sid": data["sid"]}).Decode(&student)
|
findErr := studentCollection.FindOne(context.TODO(), bson.M{"schooldata.sid": data["sid"].(string)}).Decode(&student)
|
||||||
if findErr != nil {
|
if findErr != nil {
|
||||||
cancel()
|
cancel()
|
||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
||||||
@@ -617,14 +617,14 @@ func UpdateStudentYOG(c *fiber.Ctx) error {
|
|||||||
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
|
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
|
||||||
update := bson.M{
|
update := bson.M{
|
||||||
"$set": bson.M{
|
"$set": bson.M{
|
||||||
"schooldata.yog": student.SchoolData.YOG + 1,
|
"schooldata.yog": data["yog"].(int),
|
||||||
"updated_at": update_time,
|
"updated_at": update_time,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
result, updateErr := studentCollection.UpdateOne(
|
result, updateErr := studentCollection.UpdateOne(
|
||||||
ctx,
|
ctx,
|
||||||
bson.M{"schooldata.sid": data["sid"]},
|
bson.M{"schooldata.sid": data["sid"].(string)},
|
||||||
update,
|
update,
|
||||||
)
|
)
|
||||||
if updateErr != nil {
|
if updateErr != nil {
|
||||||
@@ -921,8 +921,10 @@ func UpdateStudentEmail(c *fiber.Ctx) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sid string
|
||||||
|
var verifiedStudent bool
|
||||||
verifiedAdmin, _ := AuthenticateUser(c, 3)
|
verifiedAdmin, _ := AuthenticateUser(c, 3)
|
||||||
verifiedStudent, sid := AuthenticateUser(c, 1)
|
verifiedStudent, sid = AuthenticateUser(c, 1)
|
||||||
// Ensure Authenticated admin sent request
|
// Ensure Authenticated admin sent request
|
||||||
if !verifiedAdmin && !verifiedStudent {
|
if !verifiedAdmin && !verifiedStudent {
|
||||||
cancel()
|
cancel()
|
||||||
@@ -938,6 +940,8 @@ func UpdateStudentEmail(c *fiber.Ctx) error {
|
|||||||
"success": false,
|
"success": false,
|
||||||
"message": "missing required fields",
|
"message": "missing required fields",
|
||||||
})
|
})
|
||||||
|
} else if verifiedAdmin {
|
||||||
|
sid = data["sid"]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check required fields are included
|
// Check required fields are included
|
||||||
@@ -1566,8 +1570,13 @@ func UpdateTeacherEmail(c *fiber.Ctx) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var tid string
|
||||||
|
var verifiedTeacher bool
|
||||||
|
|
||||||
|
verifiedAdmin, _ := AuthenticateUser(c, 3)
|
||||||
|
verifiedTeacher, tid = AuthenticateUser(c, 2)
|
||||||
// Ensure Authenticated admin sent request
|
// Ensure Authenticated admin sent request
|
||||||
if verified, _ := AuthenticateUser(c, 3); !verified {
|
if !verifiedAdmin && !verifiedTeacher {
|
||||||
cancel()
|
cancel()
|
||||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
|
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
|
||||||
"success": false,
|
"success": false,
|
||||||
@@ -1575,8 +1584,18 @@ func UpdateTeacherEmail(c *fiber.Ctx) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if verifiedAdmin && data["tid"] == "" {
|
||||||
|
cancel()
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
||||||
|
"success": false,
|
||||||
|
"message": "missing required fields",
|
||||||
|
})
|
||||||
|
} else if verifiedAdmin {
|
||||||
|
tid = data["tid"]
|
||||||
|
}
|
||||||
|
|
||||||
// Check required fields are included
|
// Check required fields are included
|
||||||
if data["tid"] == "" || data["email"] == "" {
|
if data["email"] == "" {
|
||||||
cancel()
|
cancel()
|
||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
||||||
"success": false,
|
"success": false,
|
||||||
@@ -1594,7 +1613,7 @@ func UpdateTeacherEmail(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
_, updateErr := teacherCollection.UpdateOne(
|
_, updateErr := teacherCollection.UpdateOne(
|
||||||
ctx,
|
ctx,
|
||||||
bson.M{"schooldata.tid": data["tid"]},
|
bson.M{"schooldata.tid": tid},
|
||||||
update,
|
update,
|
||||||
)
|
)
|
||||||
if updateErr != nil {
|
if updateErr != nil {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"github.com/gofiber/fiber/v2/middleware/cors"
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
||||||
)
|
)
|
||||||
|
|
||||||
const version string = "\nv0.9.2-Alpha"
|
const version string = "\nv1.0.0-Beta"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println(version)
|
fmt.Println(version)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package models
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
@@ -25,7 +26,8 @@ type Admin struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *Admin) GenerateSchoolEmail() string {
|
func (a *Admin) GenerateSchoolEmail() string {
|
||||||
var email string = strings.ToLower(a.LastName) + "_" + strings.ToLower(string(a.FirstName[0])) + "@surreyschools.ca"
|
addr := os.Getenv("SYSTEM_EMAIL_ADDRESS")
|
||||||
|
var email string = strings.ToLower(a.LastName) + "_" + strings.ToLower(string(a.FirstName[0])) + addr
|
||||||
// Add check to see if email already exists
|
// Add check to see if email already exists
|
||||||
return email
|
return email
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package models
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -81,15 +82,16 @@ func (s *Student) EmailExists(email string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Student) GenerateSchoolEmail(offset int, lastEmail string) string {
|
func (s *Student) GenerateSchoolEmail(offset int, lastEmail string) string {
|
||||||
var email string = strings.ToLower(string(s.PersonalData.FirstName[0])) + "." + strings.ToLower(s.PersonalData.LastName) + "@surreyschools.ca"
|
addr := os.Getenv("SYSTEM_EMAIL_ADDRESS")
|
||||||
|
var email string = strings.ToLower(string(s.PersonalData.FirstName[0])) + "." + strings.ToLower(s.PersonalData.LastName) + addr
|
||||||
if offset > 0 && offset < len([]rune(s.PersonalData.FirstName))-1 {
|
if offset > 0 && offset < len([]rune(s.PersonalData.FirstName))-1 {
|
||||||
email = lastEmail[:offset] + strings.ToLower(string(s.PersonalData.FirstName[offset])) + lastEmail[offset:]
|
email = lastEmail[:offset] + strings.ToLower(string(s.PersonalData.FirstName[offset])) + lastEmail[offset:] + addr
|
||||||
}
|
}
|
||||||
if offset == len([]rune(s.PersonalData.FirstName))-1 {
|
if offset == len([]rune(s.PersonalData.FirstName))-1 {
|
||||||
email = strings.ToLower(s.PersonalData.FirstName) + "." + strings.ToLower(s.PersonalData.LastName) + "@surreyschools.ca"
|
email = strings.ToLower(s.PersonalData.FirstName) + "." + strings.ToLower(s.PersonalData.LastName) + addr
|
||||||
}
|
}
|
||||||
if offset > len([]rune(s.PersonalData.FirstName))-1 {
|
if offset > len([]rune(s.PersonalData.FirstName))-1 {
|
||||||
email = strings.ToLower(s.PersonalData.FirstName) + "." + strings.ToLower(s.PersonalData.LastName) + strconv.Itoa(offset-len([]rune(s.PersonalData.FirstName))) + "@surreyschools.ca"
|
email = strings.ToLower(s.PersonalData.FirstName) + "." + strings.ToLower(s.PersonalData.LastName) + strconv.Itoa(offset-len([]rune(s.PersonalData.FirstName))) + addr
|
||||||
}
|
}
|
||||||
return email
|
return email
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package models
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -79,15 +80,16 @@ func (t *Teacher) EmailExists(email string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Teacher) GenerateSchoolEmail(offset int, lastEmail string) string {
|
func (t *Teacher) GenerateSchoolEmail(offset int, lastEmail string) string {
|
||||||
var email string = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(string(t.PersonalData.FirstName[0])) + "@surreyschools.ca"
|
addr := os.Getenv("SYSTEM_EMAIL_ADDRESS")
|
||||||
|
var email string = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(string(t.PersonalData.FirstName[0])) + addr
|
||||||
if offset > 0 && offset < len([]rune(t.PersonalData.FirstName))-1 {
|
if offset > 0 && offset < len([]rune(t.PersonalData.FirstName))-1 {
|
||||||
email = lastEmail[:strings.Index(lastEmail, "_")+offset+1] + strings.ToLower(string(t.PersonalData.FirstName[offset])) + "@surreyschools.ca"
|
email = lastEmail[:strings.Index(lastEmail, "_")+offset+1] + strings.ToLower(string(t.PersonalData.FirstName[offset])) + addr
|
||||||
}
|
}
|
||||||
if offset == len([]rune(t.PersonalData.FirstName))-1 {
|
if offset == len([]rune(t.PersonalData.FirstName))-1 {
|
||||||
email = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(t.PersonalData.FirstName) + "@surreyschools.ca"
|
email = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(t.PersonalData.FirstName) + addr
|
||||||
}
|
}
|
||||||
if offset > len([]rune(t.PersonalData.FirstName))-1 {
|
if offset > len([]rune(t.PersonalData.FirstName))-1 {
|
||||||
email = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(t.PersonalData.FirstName) + strconv.Itoa(offset-len([]rune(t.PersonalData.FirstName))) + "@surreyschools.ca"
|
email = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(t.PersonalData.FirstName) + strconv.Itoa(offset-len([]rune(t.PersonalData.FirstName))) + addr
|
||||||
}
|
}
|
||||||
return email
|
return email
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user