| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from commu.interfaces.user_repository import UserRepository
- from django.contrib.auth.models import User as DjangoUser
- class DjangoUserRepository(UserRepository):
- def add(self, user):
- # user: commu.entities.user.User
- # Map role to Django flags
- is_staff = user.role.value in ("admin", "user") if hasattr(user.role, "value") else user.role in ("admin", "user")
- is_superuser = user.role.value == "admin" if hasattr(user.role, "value") else user.role == "admin"
- obj = DjangoUser.objects.create_user(
- username=user.username,
- password=None, # You may set/generate a password as needed!
- is_staff=is_staff,
- is_superuser=is_superuser,
- )
- user.id = str(obj.id)
- return user
- def get(self, user_id):
- try:
- obj = DjangoUser.objects.get(id=user_id)
- from commu.entities.user import User, UserRole
- role = self._role_from_django(obj)
- u = User(
- username=obj.username,
- role=role,
- )
- u.id = str(obj.id)
- return u
- except DjangoUser.DoesNotExist:
- return None
- def find_by_username(self, username):
- try:
- obj = DjangoUser.objects.get(username=username)
- from commu.entities.user import User, UserRole
- role = self._role_from_django(obj)
- u = User(
- username=obj.username,
- role=role,
- )
- u.id = str(obj.id)
- return u
- except DjangoUser.DoesNotExist:
- return None
- def _role_from_django(self, user_obj):
- from commu.entities.user import UserRole
- if user_obj.is_superuser:
- return UserRole.ADMIN
- elif user_obj.is_staff:
- return UserRole.USER
- else:
- return UserRole.GUEST
|