diff --git a/controllers/calendar.go b/controllers/calendar.go index da18b13..c767bf8 100644 --- a/controllers/calendar.go +++ b/controllers/calendar.go @@ -3,7 +3,6 @@ package controllers import ( "database/sql" "errors" - "fmt" "git.gnous.eu/Rick/calendrier/models" "git.gnous.eu/Rick/calendrier/services" @@ -78,14 +77,13 @@ func GetCalendarEvents(c *fiber.Ctx) error { func PostCalendar(c *fiber.Ctx) error { tmp := new(models.Calendar) err := c.BodyParser(tmp) - - fmt.Println(tmp) + name := GetName(c) if err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"err": err.Error()}) } - err = services.CreateCalendar(tmp) + err = services.CreateCalendar(tmp, name) if err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"err": err.Error()}) diff --git a/controllers/utils.go b/controllers/utils.go new file mode 100644 index 0000000..56271bd --- /dev/null +++ b/controllers/utils.go @@ -0,0 +1,13 @@ +package controllers + +import ( + "github.com/gofiber/fiber/v2" + "github.com/golang-jwt/jwt/v5" +) + +func GetName(c *fiber.Ctx) string { + t := c.Locals("user").(*jwt.Token) + claims := t.Claims.(jwt.MapClaims) + name := claims["name"].(string) + return name +} diff --git a/services/calendar.go b/services/calendar.go index c8443a0..7c50626 100644 --- a/services/calendar.go +++ b/services/calendar.go @@ -27,11 +27,19 @@ func GetCalendarById(id int) (models.Calendar, error) { return res, err } -func CreateCalendar(c *models.Calendar) error { +// name est le nom du créateur du calendrier +func CreateCalendar(c *models.Calendar, name string) error { ctx := context.Background() db := get() + user, _ := GetUserByName(name) _, err := db.NewInsert().Model(c).Exec(ctx) + if err != nil { + return err + } + + tmp := map[string]interface{}{"calendar_id": c.Id, "user_id": user.Id, "can_write": true, "is_owner": true} + _, err = db.NewInsert().Model(&tmp).Table("user_in_calendar").Exec(ctx) return err } diff --git a/sql/init.sql b/sql/init.sql index e2c39ec..6ece9a7 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -5,7 +5,7 @@ CREATE DATABASE r_calendar ENCODING 'UTF-8'; CREATE TABLE IF NOT EXISTS c_user ( id SERIAL PRIMARY KEY NOT NULL, name TEXT NOT NULL UNIQUE, - email TEXT UNIQUE, + email TEXT, password TEXT NOT NULL );