make default avatar use the avatars table
This commit is contained in:
parent
16127983ab
commit
9438d3704b
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,5 +3,6 @@ nginx.conf.compiled
|
|||||||
db.*.sqlite
|
db.*.sqlite
|
||||||
.vscode/
|
.vscode/
|
||||||
.local/
|
.local/
|
||||||
static/avatars/
|
static/avatars/*
|
||||||
|
!static/avatars/default.webp
|
||||||
secrets.lua
|
secrets.lua
|
||||||
|
@ -150,8 +150,10 @@ app:post("user_clear_avatar", "/:username/clear_avatar", function(self)
|
|||||||
if me.id ~= target_user.id then
|
if me.id ~= target_user.id then
|
||||||
return {redirect_to = self:url_for("user", {username = self.params.username})}
|
return {redirect_to = self:url_for("user", {username = self.params.username})}
|
||||||
end
|
end
|
||||||
|
local old_avatar_id = target_user.avatar_id
|
||||||
|
util.destroy_avatar(old_avatar_id)
|
||||||
target_user:update({
|
target_user:update({
|
||||||
avatar_id = db.NULL,
|
avatar_id = 1,
|
||||||
})
|
})
|
||||||
util.inject_infobox(self, "Avatar cleared.")
|
util.inject_infobox(self, "Avatar cleared.")
|
||||||
return {redirect_to = self:url_for("user_settings", {username = self.params.username})}
|
return {redirect_to = self:url_for("user_settings", {username = self.params.username})}
|
||||||
|
@ -4,6 +4,17 @@ local constants = require("constants")
|
|||||||
|
|
||||||
local alphabet = "-_@0123456789abcdefghijklmnopqrstuvwABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
local alphabet = "-_@0123456789abcdefghijklmnopqrstuvwABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
|
|
||||||
|
local function create_default_avatar()
|
||||||
|
if models.Avatars:count() > 0 then
|
||||||
|
print("default avatar must exist")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
models.Avatars:create({
|
||||||
|
file_path = "/avatars/default.webp",
|
||||||
|
uploaded_at = os.time(),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
local function create_admin()
|
local function create_admin()
|
||||||
local username = "admin"
|
local username = "admin"
|
||||||
local root_count = models.Users:count("username = ?", username)
|
local root_count = models.Users:count("username = ?", username)
|
||||||
@ -44,5 +55,6 @@ local function create_deleted_user()
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_default_avatar()
|
||||||
create_admin()
|
create_admin()
|
||||||
create_deleted_user()
|
create_deleted_user()
|
||||||
|
@ -52,4 +52,10 @@ return {
|
|||||||
[6] = function ()
|
[6] = function ()
|
||||||
schema.drop_column("post_history", "user_id")
|
schema.drop_column("post_history", "user_id")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
[7] = function ()
|
||||||
|
db.query('DROP INDEX "idx_users_avatar"')
|
||||||
|
schema.drop_column("users", "avatar_id")
|
||||||
|
schema.add_column("users", "avatar_id", "REFERENCES avatars(id) DEFAULT 1")
|
||||||
|
end
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ function Users_mt:is_logged_in_guest()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Users_mt:is_default_avatar()
|
function Users_mt:is_default_avatar()
|
||||||
return self.avatar_id == nil
|
return self.avatar_id == 1
|
||||||
end
|
end
|
||||||
|
|
||||||
function Users_mt:is_logged_in()
|
function Users_mt:is_logged_in()
|
||||||
|
BIN
static/avatars/default.webp
Normal file
BIN
static/avatars/default.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
25
util.lua
25
util.lua
@ -34,9 +34,6 @@ util.TransientUser = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function util.get_user_avatar_url(req, user)
|
function util.get_user_avatar_url(req, user)
|
||||||
if not user.avatar_id then
|
|
||||||
return "/avatars/default.webp"
|
|
||||||
end
|
|
||||||
return Avatars:find(user.avatar_id).file_path
|
return Avatars:find(user.avatar_id).file_path
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -72,6 +69,28 @@ function util.validate_and_create_image(input_image, filename)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function util.destroy_avatar(avatar_id)
|
||||||
|
if avatar_id == 1 then
|
||||||
|
print("won't delete default avatar")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local avatar = Avatars:find(avatar_id)
|
||||||
|
|
||||||
|
if not avatar then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local file_path = "static" .. avatar.file_path
|
||||||
|
local f = io.open(file_path, "r")
|
||||||
|
if not f then
|
||||||
|
print("can't open avatar file")
|
||||||
|
else
|
||||||
|
f:close()
|
||||||
|
os.remove(file_path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function util.get_logged_in_user(req)
|
function util.get_logged_in_user(req)
|
||||||
if req.session.session_key == nil then
|
if req.session.session_key == nil then
|
||||||
return nil
|
return nil
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<div class="post" id="post-<%= post.id %>">
|
<div class="post" id="post-<%= post.id %>">
|
||||||
<div class="usercard">
|
<div class="usercard">
|
||||||
<a href="<%= url_for("user", {username = post.username}) %>" style="display: contents;">
|
<a href="<%= url_for("user", {username = post.username}) %>" style="display: contents;">
|
||||||
<img src="<%= post.avatar_path or "/avatars/default.webp" %>" class="avatar">
|
<img src="<%= post.avatar_path %>" class="avatar">
|
||||||
</a>
|
</a>
|
||||||
<a href="<%= url_for("user", {username = post.username}) %>" class="username-link"><%= post.username %></a>
|
<a href="<%= url_for("user", {username = post.username}) %>" class="username-link"><%= post.username %></a>
|
||||||
<% if post.status ~= "" then %>
|
<% if post.status ~= "" then %>
|
||||||
|
Loading…
Reference in New Issue
Block a user