feat: link local library
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
|
||||
from .models import User
|
||||
|
||||
|
||||
@admin.register(User)
|
||||
class CustomUserAdmin(UserAdmin):
|
||||
readonly_fields = (
|
||||
"date_joined",
|
||||
"last_login",
|
||||
)
|
||||
list_display = (
|
||||
"username",
|
||||
"email",
|
||||
"is_active",
|
||||
"is_staff",
|
||||
"is_superuser",
|
||||
)
|
||||
list_editable = (
|
||||
"is_active",
|
||||
"is_staff",
|
||||
"is_superuser",
|
||||
)
|
||||
fieldsets = (
|
||||
(
|
||||
None,
|
||||
{
|
||||
"fields": (
|
||||
(
|
||||
"username",
|
||||
"is_active",
|
||||
"is_staff",
|
||||
"is_superuser",
|
||||
),
|
||||
("password"),
|
||||
("origin"),
|
||||
)
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Anagrafica"),
|
||||
{"fields": (("first_name", "last_name"), "email", ("attributes",))},
|
||||
),
|
||||
(
|
||||
_("Permissions"),
|
||||
{"fields": ("groups", "user_permissions"), "classes": ("collapse",)},
|
||||
),
|
||||
(
|
||||
_("Date accessi sistema"),
|
||||
{
|
||||
"fields": (
|
||||
(
|
||||
"date_joined",
|
||||
"last_login",
|
||||
)
|
||||
)
|
||||
},
|
||||
),
|
||||
)
|
||||
add_fieldsets = (
|
||||
(
|
||||
None,
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": ("username", "password1", "password2"),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
admin.site.unregister(User)
|
||||
admin.site.register(User, CustomUserAdmin)
|
||||
@@ -0,0 +1,9 @@
|
||||
from django.apps import AppConfig
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class AccountsConfig(AppConfig):
|
||||
name = "spid_cie_oidc.accounts"
|
||||
verbose_name = _("User accounts")
|
||||
default_auto_field = "django.db.models.BigAutoField"
|
||||
label = "spid_cie_oidc_accounts"
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
# Generated by Django 4.0.2 on 2022-02-06 15:45
|
||||
|
||||
import django.contrib.auth.models
|
||||
import django.contrib.auth.validators
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("auth", "0012_alter_user_first_name_max_length"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="User",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("password", models.CharField(max_length=128, verbose_name="password")),
|
||||
(
|
||||
"last_login",
|
||||
models.DateTimeField(
|
||||
blank=True, null=True, verbose_name="last login"
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_superuser",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
help_text="Designates that this user has all permissions without explicitly assigning them.",
|
||||
verbose_name="superuser status",
|
||||
),
|
||||
),
|
||||
(
|
||||
"username",
|
||||
models.CharField(
|
||||
error_messages={
|
||||
"unique": "A user with that username already exists."
|
||||
},
|
||||
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
|
||||
max_length=150,
|
||||
unique=True,
|
||||
validators=[
|
||||
django.contrib.auth.validators.UnicodeUsernameValidator()
|
||||
],
|
||||
verbose_name="username",
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_staff",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
help_text="Designates whether the user can log into this admin site.",
|
||||
verbose_name="staff status",
|
||||
),
|
||||
),
|
||||
(
|
||||
"date_joined",
|
||||
models.DateTimeField(
|
||||
default=django.utils.timezone.now, verbose_name="date joined"
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=96, null=True, verbose_name="Name"
|
||||
),
|
||||
),
|
||||
(
|
||||
"last_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=96, null=True, verbose_name="Surname"
|
||||
),
|
||||
),
|
||||
("is_active", models.BooleanField(default=True, verbose_name="active")),
|
||||
(
|
||||
"email",
|
||||
models.EmailField(
|
||||
blank=True,
|
||||
max_length=254,
|
||||
null=True,
|
||||
verbose_name="email address",
|
||||
),
|
||||
),
|
||||
(
|
||||
"taxpayer_id",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
max_length=32,
|
||||
null=True,
|
||||
verbose_name="Taxpayer's identification number",
|
||||
),
|
||||
),
|
||||
(
|
||||
"origin",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
max_length=254,
|
||||
null=True,
|
||||
verbose_name="from which connector this user come from",
|
||||
),
|
||||
),
|
||||
(
|
||||
"groups",
|
||||
models.ManyToManyField(
|
||||
blank=True,
|
||||
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
|
||||
related_name="user_set",
|
||||
related_query_name="user",
|
||||
to="auth.Group",
|
||||
verbose_name="groups",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_permissions",
|
||||
models.ManyToManyField(
|
||||
blank=True,
|
||||
help_text="Specific permissions for this user.",
|
||||
related_name="user_set",
|
||||
related_query_name="user",
|
||||
to="auth.Permission",
|
||||
verbose_name="user permissions",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name_plural": "Users",
|
||||
"ordering": ["username"],
|
||||
},
|
||||
managers=[
|
||||
("objects", django.contrib.auth.models.UserManager()),
|
||||
],
|
||||
),
|
||||
]
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 4.0.2 on 2022-03-02 17:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("spid_cie_oidc_accounts", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="user",
|
||||
name="taxpayer_id",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="attributes",
|
||||
field=models.JSONField(blank=True, default={}, null=True),
|
||||
),
|
||||
]
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.0.2 on 2022-03-02 17:24
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("spid_cie_oidc_accounts", "0002_remove_user_taxpayer_id_user_attributes"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="attributes",
|
||||
field=models.JSONField(blank=True, default=dict, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,35 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.contrib.sessions.models import Session
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class User(AbstractUser):
|
||||
first_name = models.CharField(_("Name"), max_length=96, blank=True, null=True)
|
||||
last_name = models.CharField(_("Surname"), max_length=96, blank=True, null=True)
|
||||
is_active = models.BooleanField(_("active"), default=True)
|
||||
email = models.EmailField("email address", blank=True, null=True)
|
||||
origin = models.CharField(
|
||||
_("from which connector this user come from"),
|
||||
max_length=254,
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
attributes = models.JSONField(default=dict, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ["username"]
|
||||
verbose_name_plural = _("Users")
|
||||
|
||||
def clear_sessions(self): # pragma: no cover
|
||||
user_sessions = []
|
||||
for session in Session.objects.all():
|
||||
if str(self.pk) == session.get_decoded().get("_auth_user_id"):
|
||||
user_sessions.append(session.pk)
|
||||
return Session.objects.filter(pk__in=user_sessions).delete()
|
||||
|
||||
def __str__(self): # pragma: no cover
|
||||
return "{} {}".format(
|
||||
self.first_name or self.attributes.get('given_name'),
|
||||
self.last_name or self.attributes.get('family_name', "")
|
||||
)
|
||||
@@ -0,0 +1,10 @@
|
||||
from django import template
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.filter(name="has_group")
|
||||
def has_group(user, group_name): # pragma: no cover
|
||||
group = Group.objects.get(name=group_name)
|
||||
return group in user.groups.all()
|
||||
Reference in New Issue
Block a user