*: remove unused templates and code, move avatar to User model
This commit is contained in:
		@ -2,28 +2,20 @@
 | 
			
		||||
from drf_yasg2.utils import swagger_auto_schema
 | 
			
		||||
from guardian.utils import get_anonymous_user
 | 
			
		||||
from rest_framework.decorators import action
 | 
			
		||||
from rest_framework.fields import CharField
 | 
			
		||||
from rest_framework.request import Request
 | 
			
		||||
from rest_framework.response import Response
 | 
			
		||||
from rest_framework.serializers import (
 | 
			
		||||
    BooleanField,
 | 
			
		||||
    ModelSerializer,
 | 
			
		||||
    SerializerMethodField,
 | 
			
		||||
)
 | 
			
		||||
from rest_framework.serializers import BooleanField, ModelSerializer
 | 
			
		||||
from rest_framework.viewsets import ModelViewSet
 | 
			
		||||
 | 
			
		||||
from authentik.core.models import User
 | 
			
		||||
from authentik.lib.templatetags.authentik_utils import avatar
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserSerializer(ModelSerializer):
 | 
			
		||||
    """User Serializer"""
 | 
			
		||||
 | 
			
		||||
    is_superuser = BooleanField(read_only=True)
 | 
			
		||||
    avatar = SerializerMethodField()
 | 
			
		||||
 | 
			
		||||
    def get_avatar(self, user: User) -> str:
 | 
			
		||||
        """Add user's avatar as URL"""
 | 
			
		||||
        return avatar(user)
 | 
			
		||||
    avatar = CharField(read_only=True)
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,8 @@
 | 
			
		||||
"""authentik core models"""
 | 
			
		||||
from datetime import timedelta
 | 
			
		||||
from hashlib import sha256
 | 
			
		||||
from hashlib import md5, sha256
 | 
			
		||||
from typing import Any, Optional, Type
 | 
			
		||||
from urllib.parse import urlencode
 | 
			
		||||
from uuid import uuid4
 | 
			
		||||
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
@ -11,7 +12,9 @@ from django.db import models
 | 
			
		||||
from django.db.models import Q, QuerySet
 | 
			
		||||
from django.forms import ModelForm
 | 
			
		||||
from django.http import HttpRequest
 | 
			
		||||
from django.templatetags.static import static
 | 
			
		||||
from django.utils.functional import cached_property
 | 
			
		||||
from django.utils.html import escape
 | 
			
		||||
from django.utils.timezone import now
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from guardian.mixins import GuardianUserMixin
 | 
			
		||||
@ -23,6 +26,7 @@ from authentik.core.exceptions import PropertyMappingExpressionException
 | 
			
		||||
from authentik.core.signals import password_changed
 | 
			
		||||
from authentik.core.types import UILoginButton
 | 
			
		||||
from authentik.flows.models import Flow
 | 
			
		||||
from authentik.lib.config import CONFIG
 | 
			
		||||
from authentik.lib.models import CreatedUpdatedModel, SerializerModel
 | 
			
		||||
from authentik.managed.models import ManagedModel
 | 
			
		||||
from authentik.policies.models import PolicyBindingModel
 | 
			
		||||
@ -31,6 +35,9 @@ LOGGER = get_logger()
 | 
			
		||||
USER_ATTRIBUTE_DEBUG = "goauthentik.io/user/debug"
 | 
			
		||||
USER_ATTRIBUTE_SA = "goauthentik.io/user/service-account"
 | 
			
		||||
 | 
			
		||||
GRAVATAR_URL = "https://secure.gravatar.com"
 | 
			
		||||
DEFAULT_AVATAR = static("authentik/user_default.png")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def default_token_duration():
 | 
			
		||||
    """Default duration a Token is valid"""
 | 
			
		||||
@ -126,6 +133,25 @@ class User(GuardianUserMixin, AbstractUser):
 | 
			
		||||
        """Generate a globall unique UID, based on the user ID and the hashed secret key"""
 | 
			
		||||
        return sha256(f"{self.id}-{settings.SECRET_KEY}".encode("ascii")).hexdigest()
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def avatar(self) -> str:
 | 
			
		||||
        """Get avatar, depending on authentik.avatar setting"""
 | 
			
		||||
        mode = CONFIG.raw.get("authentik").get("avatars")
 | 
			
		||||
        if mode == "none":
 | 
			
		||||
            return DEFAULT_AVATAR
 | 
			
		||||
        if mode == "gravatar":
 | 
			
		||||
            parameters = [
 | 
			
		||||
                ("s", "158"),
 | 
			
		||||
                ("r", "g"),
 | 
			
		||||
            ]
 | 
			
		||||
            # gravatar uses md5 for their URLs, so md5 can't be avoided
 | 
			
		||||
            mail_hash = md5(self.email.encode("utf-8")).hexdigest()  # nosec
 | 
			
		||||
            gravatar_url = (
 | 
			
		||||
                f"{GRAVATAR_URL}/avatar/{mail_hash}?{urlencode(parameters, doseq=True)}"
 | 
			
		||||
            )
 | 
			
		||||
            return escape(gravatar_url)
 | 
			
		||||
        raise ValueError(f"Invalid avatar mode {mode}")
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
 | 
			
		||||
        permissions = (
 | 
			
		||||
 | 
			
		||||
@ -1,19 +0,0 @@
 | 
			
		||||
{% extends 'login/base.html' %}
 | 
			
		||||
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
 | 
			
		||||
{% block card %}
 | 
			
		||||
<form method="POST" class="pf-c-form">
 | 
			
		||||
    {% block above_form %}
 | 
			
		||||
    {% endblock %}
 | 
			
		||||
 | 
			
		||||
    {% include 'partials/form.html' %}
 | 
			
		||||
 | 
			
		||||
    {% block beneath_form %}
 | 
			
		||||
    {% endblock %}
 | 
			
		||||
    <div class="pf-c-form__group pf-m-action">
 | 
			
		||||
        <button class="pf-c-button pf-m-primary pf-m-block" type="submit">{% trans primary_action %}</button>
 | 
			
		||||
    </div>
 | 
			
		||||
</form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@ -1,18 +0,0 @@
 | 
			
		||||
{% extends 'login/form.html' %}
 | 
			
		||||
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
{% load authentik_utils %}
 | 
			
		||||
 | 
			
		||||
{% block above_form %}
 | 
			
		||||
<div class="pf-c-form__group">
 | 
			
		||||
    <div class="form-control-static">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
            <img class="pf-c-avatar" src="{% avatar user %}" alt="">
 | 
			
		||||
            {{ user.username }}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
            <a href="{% url 'authentik_flows:cancel' %}">{% trans 'Not you?' %}</a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@ -1,24 +0,0 @@
 | 
			
		||||
{% extends 'login/base.html' %}
 | 
			
		||||
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
{% load authentik_utils %}
 | 
			
		||||
 | 
			
		||||
{% block title %}
 | 
			
		||||
{% trans title %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block head %}
 | 
			
		||||
<meta http-equiv="refresh" content="0; url={{ target_url }}" />
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block card %}
 | 
			
		||||
<header class="login-pf-header">
 | 
			
		||||
  <h1>{% trans title %}</h1>
 | 
			
		||||
</header>
 | 
			
		||||
<form>
 | 
			
		||||
  <div class="form-group">
 | 
			
		||||
    <div class="spinner spinner-lg"></div>
 | 
			
		||||
  </div>
 | 
			
		||||
</form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
		Reference in New Issue
	
	Block a user