Skip to content

Commit

Permalink
Change user profile, store
Browse files Browse the repository at this point in the history
  • Loading branch information
neerajbelsare committed Jul 3, 2024
1 parent b441851 commit da883dd
Show file tree
Hide file tree
Showing 121 changed files with 4,770 additions and 2,068 deletions.
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
/coverage

# production
/build
/frontend/build

# misc
.DS_Store
Expand All @@ -22,4 +22,5 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
/backend/auth/auth/secrets.py
/.env
/frontend/.env
/.idea
1 change: 1 addition & 0 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ verify_ssl = true
name = "pypi"

[packages]
config = "*"

[dev-packages]

Expand Down
6 changes: 4 additions & 2 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions backend/auth/accounts/email.py
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.
39 changes: 39 additions & 0 deletions backend/auth/accounts/management/commands/init_rbac.py
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
81 changes: 57 additions & 24 deletions backend/auth/accounts/migrations/0001_initial.py
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)),
],
),
]
36 changes: 36 additions & 0 deletions backend/auth/accounts/migrations/0002_userpreferences.py
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 backend/auth/accounts/migrations/0003_permission_role_userrole.py
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,
),
),
],
),
]
Loading

0 comments on commit da883dd

Please sign in to comment.