diff options
| author | Bobby <[email protected]> | 2025-07-18 18:38:57 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-07-18 18:38:57 +0530 |
| commit | 1d582861feab127bdd588430d4d8374cf1d54fd5 (patch) | |
| tree | eaf151e2555964370971ce404e912ae9271eea1a | |
| parent | 7feec60d6ec8b2bb5eaa34dc59c15de38a647e12 (diff) | |
| download | imageboard-1d582861feab127bdd588430d4d8374cf1d54fd5.tar.xz imageboard-1d582861feab127bdd588430d4d8374cf1d54fd5.zip | |
edit posts page prep
| -rw-r--r-- | models/user.go | 22 | ||||
| -rw-r--r-- | router/routes.go | 1 | ||||
| -rw-r--r-- | templates/error.django (renamed from templates/404.django) | 6 | ||||
| -rw-r--r-- | templates/login.django | 2 | ||||
| -rw-r--r-- | templates/posts/edit.django | 4 | ||||
| -rw-r--r-- | templates/posts/single.django | 4 | ||||
| -rw-r--r-- | templates/register.django | 2 |
7 files changed, 23 insertions, 18 deletions
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/error.django index 5f598b7..8a24f3b 100644 --- a/templates/404.django +++ b/templates/error.django @@ -1,8 +1,8 @@ {% extends 'layouts/main.django' %} {% block content %} <div class="centered-main"> - <img src="/static/images/54a1a92a6d78ed091071255803c7057e.webp" alt="404 Not Found" class="q-img" /> - <h1>404 - Page Not Found</h1> - <p>The page you are looking for does not exist.</p> + <img src="/static/images/54a1a92a6d78ed091071255803c7057e.webp" class="q-img" /> + <h1>{{ Title }}</h1> + <p>{{ Error|safe }}</p> </div> {% 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 @@ <label for="username">Username</label> </div> <div class="fg-sub"> - <input type="text" class="itext" id="username" name="username" required value="{{ Username }}" minlength="3" maxlength="72" autocomplete="username" pattern="[a-zA-Z0-9_-]+" /> + <input type="text" class="itext" id="username" name="username" required value="{{ Username }}" maxlength="72" autocomplete="username" pattern="[a-zA-Z0-9_-]+" /> <small>3-72 characters, letters, numbers, underscores, and hyphens only</small> </div> </div> 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 @@ <a href="javascript:void(0);" onclick="switchSize('medium');">Medium</a> <a href="javascript:void(0);" onclick="switchSize('large');">Large</a> <a href="javascript:void(0);" onclick="switchSize('original');">Original</a> - {% if Post.Uploader.Username == User.Username or User.CanEditTags %} - | <a href="/posts/edit/{{ Post.ID }}#tags">Edit Post</a> + {% if User and Post.Uploader.Username == User.Username or User.CanEditTags %} + | <a href="/posts/{{ Post.ID }}/edit#tags">Edit Post</a> {% endif %} </div> </div> 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 @@ <label for="username">Username</label> </div> <div class="fg-sub"> - <input type="text" class="itext" id="username" name="username" required value="{{ Username }}" minlength="3" maxlength="72" autocomplete="username" pattern="[a-zA-Z0-9_-]+" /> + <input type="text" class="itext" id="username" name="username" required value="{{ Username }}" maxlength="72" autocomplete="username" pattern="[a-zA-Z0-9_-]+" /> <small>3-72 characters, letters, numbers, underscores, and hyphens only</small> </div> </div> |
