From 1d582861feab127bdd588430d4d8374cf1d54fd5 Mon Sep 17 00:00:00 2001 From: Bobby Date: Fri, 18 Jul 2025 18:38:57 +0530 Subject: edit posts page prep --- models/user.go | 22 +++++++++++----------- router/routes.go | 1 + templates/404.django | 8 -------- templates/error.django | 8 ++++++++ templates/login.django | 2 +- templates/posts/edit.django | 4 ++++ templates/posts/single.django | 4 ++-- templates/register.django | 2 +- 8 files changed, 28 insertions(+), 23 deletions(-) delete mode 100644 templates/404.django create mode 100644 templates/error.django create mode 100644 templates/posts/edit.django diff --git a/models/user.go b/models/user.go index d918db7..6ed3270 100644 --- a/models/user.go +++ b/models/user.go @@ -45,7 +45,16 @@ func (u *User) BeforeCreate(tx *gorm.DB) error { return fmt.Errorf("email cannot be empty") } - if len(u.Username) < 3 { + var userCount int64 + if err := tx.Model(&User{}).Where("is_deleted = ?", false).Count(&userCount).Error; err != nil { + return fmt.Errorf("failed to count existing users: %v", err) + } + + if userCount == 0 { + u.Level = config.UserLevelSuperAdmin // First user becomes Super Admin + } + + if len(u.Username) < 3 && u.Level < config.UserLevelSuperAdmin { return fmt.Errorf("username must be at least 3 characters long") } @@ -57,7 +66,7 @@ func (u *User) BeforeCreate(tx *gorm.DB) error { return fmt.Errorf("username can only contain letters, numbers, underscores, and hyphens") } - if validators.IsReservedUsername(u.Username) { + if validators.IsReservedUsername(u.Username) && u.Level < config.UserLevelSuperAdmin { return fmt.Errorf("username '%s' is reserved and cannot be used", u.Username) } @@ -71,15 +80,6 @@ func (u *User) BeforeCreate(tx *gorm.DB) error { return fmt.Errorf("username '%s' is already taken", u.Username) } - var userCount int64 - if err := tx.Model(&User{}).Where("is_deleted = ?", false).Count(&userCount).Error; err != nil { - return fmt.Errorf("failed to count existing users: %v", err) - } - - if userCount == 0 { - u.Level = config.UserLevelSuperAdmin // First user becomes Super Admin - } - if len(u.Password) < config.Server.MinPasswordLength { return fmt.Errorf("password must be at least %d characters long", config.Server.MinPasswordLength) } diff --git a/router/routes.go b/router/routes.go index b573ad9..9d8c4fd 100644 --- a/router/routes.go +++ b/router/routes.go @@ -19,6 +19,7 @@ func Initialize(router *fiber.App) { posts.Get("/new/ilinkfetch", controllers.PostsUploadImageLinkProxyController) posts.Get("/:id", controllers.PostsSinglePostPageController) posts.Post("/:id/favourite", controllers.PostsSinglePostFavouriteController) + posts.Get("/:id/edit", controllers.PostsSinglePostEditController) login := router.Group("/login") login.Get("/", controllers.LoginPageController) diff --git a/templates/404.django b/templates/404.django deleted file mode 100644 index 5f598b7..0000000 --- a/templates/404.django +++ /dev/null @@ -1,8 +0,0 @@ -{% extends 'layouts/main.django' %} -{% block content %} -
- 404 Not Found -

404 - Page Not Found

-

The page you are looking for does not exist.

-
-{% endblock %} diff --git a/templates/error.django b/templates/error.django new file mode 100644 index 0000000..8a24f3b --- /dev/null +++ b/templates/error.django @@ -0,0 +1,8 @@ +{% extends 'layouts/main.django' %} +{% block content %} +
+ +

{{ Title }}

+

{{ Error|safe }}

+
+{% endblock %} diff --git a/templates/login.django b/templates/login.django index 4d23375..428c260 100644 --- a/templates/login.django +++ b/templates/login.django @@ -18,7 +18,7 @@
- + 3-72 characters, letters, numbers, underscores, and hyphens only
diff --git a/templates/posts/edit.django b/templates/posts/edit.django new file mode 100644 index 0000000..b4f13a4 --- /dev/null +++ b/templates/posts/edit.django @@ -0,0 +1,4 @@ +{% extends 'layouts/main.django' %} +{% block content %} + Edit Post Page +{% endblock %} diff --git a/templates/posts/single.django b/templates/posts/single.django index b805af8..ec788c3 100644 --- a/templates/posts/single.django +++ b/templates/posts/single.django @@ -82,8 +82,8 @@ Medium Large Original - {% if Post.Uploader.Username == User.Username or User.CanEditTags %} - | Edit Post + {% if User and Post.Uploader.Username == User.Username or User.CanEditTags %} + | Edit Post {% endif %} diff --git a/templates/register.django b/templates/register.django index 808f15a..b1c344f 100644 --- a/templates/register.django +++ b/templates/register.django @@ -18,7 +18,7 @@
- + 3-72 characters, letters, numbers, underscores, and hyphens only
-- cgit v1.2.3