From 287556cca716671170b9b8de4fb5d071e45093db Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Tue, 27 Aug 2019 19:55:55 -0400 Subject: [PATCH] fill in user model --- lib/philomena/users/user.ex | 70 +++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/lib/philomena/users/user.ex b/lib/philomena/users/user.ex index 8024c424..dbf6b505 100644 --- a/lib/philomena/users/user.ex +++ b/lib/philomena/users/user.ex @@ -10,7 +10,9 @@ defmodule Philomena.Users.User do schema "users" do belongs_to :current_filter, Philomena.Filters.Filter + belongs_to :deleted_by_user, Philomena.Users.User + # Authentication field :email, :string field :encrypted_password, :string field :password_hash, :string, source: :encrypted_password @@ -23,10 +25,74 @@ defmodule Philomena.Users.User do field :current_sign_in_ip, EctoNetwork.INET field :last_sign_in_ip, EctoNetwork.INET field :otp_required_for_login, :boolean - field :name, :string - + field :failed_attempts, :integer + field :authentication_token, :string + field :unlock_token, :string + field :locked_at, :naive_datetime + field :encrypted_otp_secret, :string + field :encrypted_otp_secret_iv, :string + field :encrypted_otp_secret_salt, :string + field :consumed_timestep, :integer + field :otp_backup_codes, {:array, :string} pow_user_fields() + # General attributes + field :name, :string + field :slug, :string + field :role, :string, default: "user" + field :description, :string + field :avatar, :string + + # Settings + field :spoiler_type, :string, default: "static" + field :theme, :string, default: "default" + field :images_per_page, :integer, default: 15 + field :show_large_thumbnails, :boolean, default: true + field :show_sidebar_and_watched_images, :boolean, default: true + field :fancy_tag_field_on_upload, :boolean, default: true + field :fancy_tag_field_on_edit, :boolean, default: true + field :fancy_tag_field_in_settings, :boolean, default: true + field :autorefresh_by_default, :boolean, default: false + field :anonymous_by_default, :boolean, default: false + field :scale_large_images, :boolean, default: true + field :comments_newest_first, :boolean, default: true + field :comments_always_jump_to_last, :boolean, default: true + field :comments_per_page, :integer, default: 20 + field :watch_on_reply, :boolean, default: true + field :watch_on_new_topic, :boolean, default: true + field :watch_on_upload, :boolean, default: true + field :messages_newest_first, :boolean, default: false + field :serve_webm, :boolean, default: false + field :no_spoilered_in_watched, :boolean, default: false + field :watched_images_query_str, :string, default: "" + field :watched_images_exclude_str, :string, default: "" + field :use_centered_layout, :boolean, default: false + field :personal_title, :string + field :show_hidden_items, :boolean, default: false + field :hide_vote_counts, :boolean, default: false + field :hide_advertisements, :boolean, default: false + + # Counters + field :forum_posts_count, :integer, default: 0 + field :topic_count, :integer, default: 0 + field :uploads_count, :integer, default: 0 + field :votes_cast_count, :integer, default: 0 + field :comments_posted_count, :integer, default: 0 + field :metadata_updates_count, :integer, default: 0 + field :images_favourited_count, :integer, default: 0 + + # Poorly denormalized associations + field :recent_filter_ids, {:array, :integer}, default: [] + field :watched_tag_ids, {:array, :integer}, default: [] + + # Other stuff + field :last_donation_at, :naive_datetime + field :last_renamed_at, :naive_datetime + field :deleted_at, :naive_datetime + field :scratchpad, :string + field :secondary_role, :string + field :hide_default_role, :boolean, default: false + timestamps(inserted_at: :created_at) end