Fresh repository history for elektrine/tarakan hosted at https://git.elektrine.com/elektrine/tarakan.
111 lines
4.2 KiB
Elixir
111 lines
4.2 KiB
Elixir
defmodule TarakanWeb.AccountLive.Profile do
|
|
use TarakanWeb, :live_view
|
|
|
|
alias Tarakan.Credits
|
|
alias Tarakan.Profiles
|
|
alias Tarakan.Reputation
|
|
|
|
@impl true
|
|
def mount(%{"handle" => handle}, _session, socket) do
|
|
case Profiles.get_profile(handle) do
|
|
nil ->
|
|
raise Ecto.NoResultsError, queryable: Tarakan.Accounts.Account
|
|
|
|
account ->
|
|
{:ok,
|
|
socket
|
|
|> assign(:page_title, "@#{account.handle}")
|
|
|> assign(:meta_description, meta_description(account))
|
|
|> assign(:canonical_path, ~p"/#{account.handle}")
|
|
|> assign(:account, account)
|
|
|> assign(:reputation, Reputation.score(account))
|
|
|> assign(:stake_summary, Reputation.stake_summary(account))
|
|
|> assign(:credit_balance, Credits.balance(account))
|
|
|> assign(:credit_entries, Credits.ledger(account, limit: 20))
|
|
|> assign(:stats, Profiles.contribution_stats(account))
|
|
|> assign(:badges, Profiles.badges(account))
|
|
|> assign(:repositories, Profiles.list_repositories(account))
|
|
|> assign(:reviews, Profiles.list_reviews(account))
|
|
|> assign(:findings, Profiles.list_findings(account))
|
|
|> assign(:checks, Profiles.list_checks(account))}
|
|
end
|
|
end
|
|
|
|
defp meta_description(account) do
|
|
"@#{account.handle} on Tarakan - #{tier_label(account.trust_tier)} contributor to the public security record for open source."
|
|
end
|
|
|
|
@doc false
|
|
def tier_label("reviewer"), do: "Reviewer"
|
|
def tier_label("contributor"), do: "Contributor"
|
|
def tier_label(_new), do: "New"
|
|
|
|
@doc false
|
|
def role_label("admin"), do: "Admin"
|
|
def role_label("moderator"), do: "Moderator"
|
|
def role_label(_member), do: nil
|
|
|
|
@doc false
|
|
def badge_label(:first_blood), do: "First blood"
|
|
def badge_label(:century), do: "Century"
|
|
def badge_label(:eradicator), do: "Eradicator"
|
|
def badge_label(:exorcist), do: "Exorcist"
|
|
def badge_label(:sharpshooter), do: "Sharpshooter"
|
|
def badge_label(badge), do: badge |> to_string() |> String.replace("_", " ")
|
|
|
|
@doc false
|
|
def joined_on(%DateTime{} = datetime), do: Calendar.strftime(datetime, "%B %Y")
|
|
def joined_on(%NaiveDateTime{} = datetime), do: Calendar.strftime(datetime, "%B %Y")
|
|
|
|
@doc false
|
|
def activity_time(%DateTime{} = datetime), do: Calendar.strftime(datetime, "%Y-%m-%d")
|
|
|
|
@doc false
|
|
def credit_kind_label(kind) when is_binary(kind), do: String.replace(kind, "_", " ")
|
|
def credit_kind_label(_kind), do: "entry"
|
|
|
|
@doc false
|
|
def credit_amount(amount) when is_integer(amount) and amount > 0, do: "+#{amount}"
|
|
def credit_amount(amount) when is_integer(amount), do: Integer.to_string(amount)
|
|
|
|
@doc false
|
|
def short_sha(sha) when is_binary(sha), do: String.slice(sha, 0, 7)
|
|
def short_sha(_sha), do: nil
|
|
|
|
@doc false
|
|
def review_kind_label("code_review"), do: "Code review"
|
|
def review_kind_label("threat_model"), do: "Threat model"
|
|
def review_kind_label("privacy_review"), do: "Privacy review"
|
|
def review_kind_label("business_logic"), do: "Business logic"
|
|
def review_kind_label("diff_review"), do: "Diff review"
|
|
def review_kind_label("refute_finding"), do: "Refute a finding"
|
|
def review_kind_label("reproduce_finding"), do: "Reproduce a finding"
|
|
def review_kind_label("calibrate_severity"), do: "Re-score severity"
|
|
def review_kind_label("synthesize_rule"), do: "Write a detector"
|
|
def review_kind_label(other) when is_binary(other), do: String.replace(other, "_", " ")
|
|
def review_kind_label(_other), do: "Report"
|
|
|
|
@doc false
|
|
def review_status_label("accepted"), do: "Accepted"
|
|
def review_status_label("quarantined"), do: "Quarantined"
|
|
def review_status_label("rejected"), do: "Rejected"
|
|
def review_status_label("contested"), do: "Contested"
|
|
def review_status_label(other) when is_binary(other), do: String.capitalize(other)
|
|
def review_status_label(_other), do: nil
|
|
|
|
@doc false
|
|
def provider_label("github"), do: "GitHub"
|
|
def provider_label("gitlab"), do: "GitLab"
|
|
def provider_label(other), do: String.capitalize(other)
|
|
|
|
@doc false
|
|
def check_path(%{public_id: public_id}) when is_binary(public_id) do
|
|
~p"/findings/#{public_id}"
|
|
end
|
|
|
|
def check_path(%{repository: repository}) when not is_nil(repository) do
|
|
TarakanWeb.RepositoryPaths.repository_security_path(repository)
|
|
end
|
|
|
|
def check_path(_entry), do: ~p"/"
|
|
end
|