-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b441851
commit da883dd
Showing
121 changed files
with
4,770 additions
and
2,068 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,7 @@ verify_ssl = true | |
name = "pypi" | ||
|
||
[packages] | ||
config = "*" | ||
|
||
[dev-packages] | ||
|
||
|
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
from djoser import email | ||
from djoser import utils | ||
from djoser.conf import settings | ||
from django.contrib.auth.tokens import default_token_generator | ||
|
||
|
||
class ActivationEmail(email.ActivationEmail): | ||
template_name = 'accounts/ActivationEmail.html' | ||
|
||
def get_context_data(self): | ||
# ActivationEmail can be deleted | ||
context = super().get_context_data() | ||
|
||
user = context.get("user") | ||
context["uid"] = utils.encode_uid(user.pk) | ||
context["token"] = default_token_generator.make_token(user) | ||
context["url"] = settings.ACTIVATION_URL.format(**context) | ||
return context | ||
|
||
|
||
class ConfirmationEmail(email.ConfirmationEmail): | ||
template_name = 'accounts/ConfirmationEmail.html' |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
from django.core.management.base import BaseCommand | ||
from accounts.models import Module, Permission, Role | ||
|
||
|
||
class Command(BaseCommand): | ||
help = 'Initialize RBAC system with modules, permissions, and roles' | ||
|
||
def handle(self, *args, **kwargs): | ||
self.create_modules() | ||
self.create_permissions() | ||
self.create_roles() | ||
self.stdout.write(self.style.SUCCESS('Successfully initialized RBAC system')) | ||
|
||
def create_modules(self): | ||
self.assets_module = Module.objects.get_or_create(name="Assets")[0] | ||
self.comments_module = Module.objects.get_or_create(name="Comments")[0] | ||
self.users_module = Module.objects.get_or_create(name="Users")[0] | ||
|
||
def create_permissions(self): | ||
self.create_assets = Permission.objects.get_or_create(name="Create", module=self.assets_module)[0] | ||
self.read_assets = Permission.objects.get_or_create(name="Read", module=self.assets_module)[0] | ||
self.update_assets = Permission.objects.get_or_create(name="Update", module=self.assets_module)[0] | ||
self.delete_assets = Permission.objects.get_or_create(name="Delete", module=self.assets_module)[0] | ||
|
||
self.read_comments = Permission.objects.get_or_create(name="Read", module=self.comments_module)[0] | ||
self.create_comments = Permission.objects.get_or_create(name="Create", module=self.comments_module)[0] | ||
|
||
self.read_users = Permission.objects.get_or_create(name="Read", module=self.users_module)[0] | ||
|
||
def create_roles(self): | ||
user_role = Role.objects.get_or_create(name="User")[0] | ||
user_role.permissions.add(self.read_assets, self.read_comments, self.create_comments) | ||
|
||
creator_role = Role.objects.get_or_create(name="Creator")[0] | ||
creator_role.permissions.add(self.create_assets, self.read_assets, self.update_assets, self.delete_assets, | ||
self.read_comments, self.create_comments) | ||
|
||
organization_role = Role.objects.get_or_create(name="Organization")[0] | ||
# Assign permissions based on special access features |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,73 @@ | ||
# Generated by Django 4.1.10 on 2024-01-01 13:26 | ||
# Generated by Django 4.1.10 on 2024-06-10 17:21 | ||
|
||
from django.db import migrations, models | ||
import uuid | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
initial = True | ||
|
||
dependencies = [ | ||
] | ||
dependencies = [] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name='User', | ||
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')), | ||
('email', models.EmailField(max_length=255, unique=True, verbose_name='Email')), | ||
('first_name', models.CharField(max_length=200)), | ||
('last_name', models.CharField(max_length=200)), | ||
('age', models.PositiveIntegerField()), | ||
('gender', models.CharField(max_length=200)), | ||
('address', models.CharField(max_length=600)), | ||
('preferred_lang', models.CharField(max_length=200)), | ||
('company', models.CharField(max_length=200)), | ||
('job_title', models.CharField(max_length=200)), | ||
('industry', models.CharField(max_length=400)), | ||
('experience', models.IntegerField()), | ||
('is_active', models.BooleanField(default=True)), | ||
('is_admin', models.BooleanField(default=False)), | ||
('created_at', models.DateTimeField(auto_now_add=True)), | ||
('updated_at', models.DateTimeField(auto_now=True)), | ||
("password", models.CharField(max_length=128, verbose_name="password")), | ||
( | ||
"last_login", | ||
models.DateTimeField( | ||
blank=True, null=True, verbose_name="last login" | ||
), | ||
), | ||
( | ||
"id", | ||
models.UUIDField( | ||
default=uuid.uuid4, | ||
editable=False, | ||
primary_key=True, | ||
serialize=False, | ||
unique=True, | ||
), | ||
), | ||
( | ||
"email", | ||
models.EmailField( | ||
max_length=255, unique=True, verbose_name="Email" | ||
), | ||
), | ||
("first_name", models.CharField(max_length=200)), | ||
("last_name", models.CharField(max_length=200)), | ||
("date_of_birth", models.DateField()), | ||
("gender", models.CharField(max_length=200)), | ||
("address", models.CharField(max_length=600)), | ||
("preferred_lang", models.CharField(max_length=200)), | ||
("company", models.CharField(max_length=200)), | ||
("job_title", models.CharField(max_length=200)), | ||
("industry", models.CharField(max_length=400)), | ||
("experience", models.IntegerField()), | ||
("is_active", models.BooleanField(default=True)), | ||
("is_admin", models.BooleanField(default=False)), | ||
("created_at", models.DateTimeField(auto_now_add=True)), | ||
("updated_at", models.DateTimeField(auto_now=True)), | ||
], | ||
options={ | ||
'abstract': False, | ||
"abstract": False, | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name="Module", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("name", models.CharField(max_length=50)), | ||
], | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# Generated by Django 4.1.10 on 2024-06-15 08:21 | ||
|
||
from django.conf import settings | ||
from django.db import migrations, models | ||
import django.db.models.deletion | ||
|
||
|
||
class Migration(migrations.Migration): | ||
dependencies = [ | ||
("accounts", "0001_initial"), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name="UserPreferences", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("dark_mode", models.BooleanField(default=False)), | ||
( | ||
"user", | ||
models.OneToOneField( | ||
on_delete=django.db.models.deletion.CASCADE, | ||
to=settings.AUTH_USER_MODEL, | ||
), | ||
), | ||
], | ||
), | ||
] |
81 changes: 81 additions & 0 deletions
81
backend/auth/accounts/migrations/0003_permission_role_userrole.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# Generated by Django 4.1.10 on 2024-06-15 12:51 | ||
|
||
from django.conf import settings | ||
from django.db import migrations, models | ||
import django.db.models.deletion | ||
|
||
|
||
class Migration(migrations.Migration): | ||
dependencies = [ | ||
("accounts", "0002_userpreferences"), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name="Permission", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("name", models.CharField(max_length=50)), | ||
( | ||
"module", | ||
models.ForeignKey( | ||
on_delete=django.db.models.deletion.CASCADE, | ||
to="accounts.module", | ||
), | ||
), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name="Role", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("name", models.CharField(max_length=50)), | ||
("permissions", models.ManyToManyField(to="accounts.permission")), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name="UserRole", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
( | ||
"role", | ||
models.ForeignKey( | ||
null=True, | ||
on_delete=django.db.models.deletion.SET_NULL, | ||
to="accounts.role", | ||
), | ||
), | ||
( | ||
"user", | ||
models.OneToOneField( | ||
on_delete=django.db.models.deletion.CASCADE, | ||
to=settings.AUTH_USER_MODEL, | ||
), | ||
), | ||
], | ||
), | ||
] |
Oops, something went wrong.