add from v002

This commit is contained in:
2026-05-20 21:24:00 +02:00
parent 1a6ba86d0b
commit 83fb8c69bb
98 changed files with 10878 additions and 0 deletions

View File

View File

@@ -0,0 +1,13 @@
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
model = CustomUser
# Definiramo koja polja se vide u admin listi i formama
list_display = ['email', 'username', 'first_name', 'last_name', 'is_staff', 'is_serviser']
fieldsets = UserAdmin.fieldsets + (
('Dodatni podaci', {'fields': ('telefon', 'oib', 'is_serviser')}),
)
admin.site.register(CustomUser, CustomUserAdmin)

View File

@@ -0,0 +1,5 @@
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'

View File

@@ -0,0 +1,18 @@
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
# Email koristimo za login, pa mora biti jedinstven
email = models.EmailField(unique=True)
# Dodatna polja za tvoju tvrtku
telefon = models.CharField(max_length=20, blank=True)
oib = models.CharField(max_length=11, blank=True, null=True)
is_serviser = models.BooleanField(default=False) # Razlikovanje uloga
# Govorimo Djangu da koristi email umjesto username-a
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'first_name', 'last_name']
def __str__(self):
return f"{self.first_name} {self.last_name} ({self.email})"

View File

@@ -0,0 +1,7 @@
from rest_framework import serializers
from .models import CustomUser
class UserMeSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ['id', 'email', 'first_name', 'last_name', 'is_serviser']

View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

10
001.BACKEND/users/urls.py Normal file
View File

@@ -0,0 +1,10 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import UserViewSet
router = DefaultRouter()
router.register(r'', UserViewSet, basename='user')
urlpatterns = [
path('', include(router.urls)),
]

View File

@@ -0,0 +1,27 @@
from rest_framework import viewsets, permissions, status
from rest_framework.decorators import action
from rest_framework.response import Response
from django.conf import settings
from .models import CustomUser
from rest_framework import serializers
from .models import CustomUser
class UserMeSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ['id', 'email', 'first_name', 'last_name', 'is_serviser']
class UserViewSet(viewsets.ViewSet):
# Akcija 'me' bit će dostupna na /api/users/me/
@action(detail=False, methods=['get'])
def me(self, request):
# 1. Provjera je li korisnik stvarno logiran (ima validan token)
if not request.user.is_authenticated:
return Response(
{"detail": "Niste prijavljeni. U DEBUG modu pristup je dozvoljen, ali nema podataka za AnonymousUser."},
status=status.HTTP_200_OK # Možeš vratiti 200 s praznim podacima ili 401
)
# 2. Ako je logiran, normalno serijaliziraj
serializer = UserMeSerializer(request.user)
return Response(serializer.data)