add: profile and community opengraph tags
This commit is contained in:
parent
0ef6d0ddca
commit
f49cc80886
6 changed files with 86 additions and 8 deletions
|
@ -1,5 +1,35 @@
|
|||
{% extends "root.html" %} {% block head %}
|
||||
<title>{{ community.context.display_name }} - {{ config.name }}</title>
|
||||
|
||||
<meta name="og:title" content="{{ community.title }}" />
|
||||
<meta
|
||||
name="description"
|
||||
content='View the "{{ community.title }}" community on {{ config.name }}!'
|
||||
/>
|
||||
<meta
|
||||
name="og:description"
|
||||
content='View the "{{ community.title }}" community on {{ config.name }}!'
|
||||
/>
|
||||
|
||||
<meta property="og:type" content="profile" />
|
||||
<meta property="profile:username" content="{{ community.title }}" />
|
||||
|
||||
<meta
|
||||
name="og:image"
|
||||
content="{{ config.host|safe }}/api/v1/communities/{{ community.id }}/avatar"
|
||||
/>
|
||||
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="{{ config.host|safe }}/api/v1/communities/{{ community.id }}/avatar"
|
||||
/>
|
||||
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="{{ community.title }}" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content='View the "{{ community.title }}" community on {{ config.name }}!'
|
||||
/>
|
||||
{% endblock %} {% block body %} {{ macros::nav() }}
|
||||
<article>
|
||||
<div class="content_container flex flex-col gap-4">
|
||||
|
|
|
@ -1,5 +1,35 @@
|
|||
{% extends "root.html" %} {% block head %}
|
||||
<title>{{ profile.username }} - {{ config.name }}</title>
|
||||
|
||||
<meta name="og:title" content="{{ profile.username }}" />
|
||||
<meta
|
||||
name="description"
|
||||
content="View @{{ profile.username }}'s profile on {{ config.name }}!"
|
||||
/>
|
||||
<meta
|
||||
name="og:description"
|
||||
content="View @{{ profile.username }}'s profile on {{ config.name }}!"
|
||||
/>
|
||||
|
||||
<meta property="og:type" content="profile" />
|
||||
<meta property="profile:username" content="{{ profile.username }}" />
|
||||
|
||||
<meta
|
||||
name="og:image"
|
||||
content="{{ config.host|safe }}/api/v1/auth/user/{{ profile.username }}/avatar?selector_type=username"
|
||||
/>
|
||||
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="{{ config.host|safe }}/api/v1/auth/user/{{ profile.username }}/avatar?selector_type=username"
|
||||
/>
|
||||
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="{{ profile.username }}" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="View @{{ profile.username }}'s profile on {{ config.name }}!"
|
||||
/>
|
||||
{% endblock %} {% block body %} {{ macros::nav() }}
|
||||
<article>
|
||||
<div class="content_container flex flex-col gap-4">
|
||||
|
|
|
@ -52,8 +52,20 @@ pub async fn avatar_request(
|
|||
let data = &(data.read().await).0;
|
||||
|
||||
let user = match if req.selector_type == AvatarSelectorType::Id {
|
||||
data.get_user_by_id(selector.parse::<usize>().unwrap())
|
||||
.await
|
||||
data.get_user_by_id(match selector.parse::<usize>() {
|
||||
Ok(d) => d,
|
||||
Err(_) => {
|
||||
return (
|
||||
[("Content-Type", "image/svg+xml")],
|
||||
Body::from(read_image(PathBufD::current().extend(&[
|
||||
data.0.dirs.media.as_str(),
|
||||
"images",
|
||||
"default-avatar.svg",
|
||||
]))),
|
||||
);
|
||||
}
|
||||
})
|
||||
.await
|
||||
} else {
|
||||
data.get_user_by_username(&selector).await
|
||||
} {
|
||||
|
|
|
@ -173,6 +173,10 @@ pub struct Config {
|
|||
/// order to prevent a way too easy DOS.
|
||||
#[serde(default = "default_banned_hosts")]
|
||||
pub banned_hosts: Vec<String>,
|
||||
/// The main public host of the server. **Not** used to check against banned hosts,
|
||||
/// so this host should be included in there as well.
|
||||
#[serde(default = "default_host")]
|
||||
pub host: String,
|
||||
/// Database security.
|
||||
#[serde(default = "default_security")]
|
||||
pub security: SecurityConfig,
|
||||
|
@ -222,6 +226,10 @@ fn default_banned_hosts() -> Vec<String> {
|
|||
Vec::new()
|
||||
}
|
||||
|
||||
fn default_host() -> String {
|
||||
String::new()
|
||||
}
|
||||
|
||||
fn default_security() -> SecurityConfig {
|
||||
SecurityConfig::default()
|
||||
}
|
||||
|
@ -268,6 +276,7 @@ impl Default for Config {
|
|||
color: default_color(),
|
||||
port: default_port(),
|
||||
banned_hosts: default_banned_hosts(),
|
||||
host: default_host(),
|
||||
database: default_database(),
|
||||
security: default_security(),
|
||||
dirs: default_dirs(),
|
||||
|
|
|
@ -423,9 +423,7 @@ impl DataManager {
|
|||
pub fn check_totp(&self, ua: &User, code: &str) -> bool {
|
||||
let totp = ua.totp(Some(
|
||||
self.0
|
||||
.banned_hosts
|
||||
.get(0)
|
||||
.unwrap_or(&"https://tetratto.com".to_string())
|
||||
.host
|
||||
.replace("http://", "")
|
||||
.replace("https://", "")
|
||||
.replace(":", "_"),
|
||||
|
@ -527,9 +525,7 @@ impl DataManager {
|
|||
// get totp
|
||||
let totp = other_user.totp(Some(
|
||||
self.0
|
||||
.banned_hosts
|
||||
.get(0)
|
||||
.unwrap_or(&"https://tetratto.com".to_string())
|
||||
.host
|
||||
.replace("http://", "")
|
||||
.replace("https://", "")
|
||||
.replace(":", "_"),
|
||||
|
|
|
@ -4,6 +4,7 @@ color = "#c9b1bc"
|
|||
port = 4118
|
||||
banned_hosts = []
|
||||
no_track = []
|
||||
host = "http://localhost:4118"
|
||||
banned_usernames = [
|
||||
"admin",
|
||||
"owner",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue