make default avatar use the avatars table
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -3,5 +3,6 @@ nginx.conf.compiled
 | 
			
		||||
db.*.sqlite
 | 
			
		||||
.vscode/
 | 
			
		||||
.local/
 | 
			
		||||
static/avatars/
 | 
			
		||||
static/avatars/*
 | 
			
		||||
!static/avatars/default.webp
 | 
			
		||||
secrets.lua
 | 
			
		||||
 
 | 
			
		||||
@@ -150,8 +150,10 @@ app:post("user_clear_avatar", "/:username/clear_avatar", function(self)
 | 
			
		||||
  if me.id ~= target_user.id then
 | 
			
		||||
    return {redirect_to = self:url_for("user", {username = self.params.username})}
 | 
			
		||||
  end
 | 
			
		||||
  local old_avatar_id = target_user.avatar_id
 | 
			
		||||
  util.destroy_avatar(old_avatar_id)
 | 
			
		||||
  target_user:update({
 | 
			
		||||
    avatar_id = db.NULL,
 | 
			
		||||
    avatar_id = 1,
 | 
			
		||||
  })
 | 
			
		||||
  util.inject_infobox(self, "Avatar cleared.")
 | 
			
		||||
  return {redirect_to = self:url_for("user_settings", {username = self.params.username})}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,17 @@ local constants = require("constants")
 | 
			
		||||
 | 
			
		||||
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 username = "admin"
 | 
			
		||||
  local root_count = models.Users:count("username = ?", username)
 | 
			
		||||
@@ -44,5 +55,6 @@ local function create_deleted_user()
 | 
			
		||||
  })
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
create_default_avatar()
 | 
			
		||||
create_admin()
 | 
			
		||||
create_deleted_user()
 | 
			
		||||
 
 | 
			
		||||
@@ -52,4 +52,10 @@ return {
 | 
			
		||||
  [6] = function ()
 | 
			
		||||
    schema.drop_column("post_history", "user_id")
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
function Users_mt:is_default_avatar()
 | 
			
		||||
  return self.avatar_id == nil
 | 
			
		||||
  return self.avatar_id == 1
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
  if not user.avatar_id then
 | 
			
		||||
    return "/avatars/default.webp"
 | 
			
		||||
  end
 | 
			
		||||
  return Avatars:find(user.avatar_id).file_path
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -72,6 +69,28 @@ function util.validate_and_create_image(input_image, filename)
 | 
			
		||||
  return true
 | 
			
		||||
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)
 | 
			
		||||
  if req.session.session_key == nil then
 | 
			
		||||
    return nil
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<div class="post" id="post-<%= post.id %>">
 | 
			
		||||
  <div class="usercard">
 | 
			
		||||
    <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 href="<%= url_for("user", {username = post.username}) %>" class="username-link"><%= post.username %></a>
 | 
			
		||||
    <% if post.status ~= "" then %>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user