Skip to content

Instantly share code, notes, and snippets.

View BrockHerion's full-sized avatar
🏠
Working from home

Brock Herion BrockHerion

🏠
Working from home
View GitHub Profile
@BrockHerion
BrockHerion / models.py
Created August 26, 2020 19:49
Create roles to use in our application
import uuid
from django.db import models
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.base_user import AbstractBaseUser
from django.utils import timezone
from .managers import CustomUserManager
# Create your models here.
@BrockHerion
BrockHerion / models.py
Last active November 5, 2020 04:32
Create user fields in models.py
import uuid
from django.db import models
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.base_user import AbstractBaseUser
from django.utils import timezone
from .managers import CustomUserManager
# Create your models here.
@BrockHerion
BrockHerion / manager.py
Created August 27, 2020 00:11
Create a custom user manager
from django.contrib.auth.base_user import BaseUserManager
from django.utils.translation import ugettext_lazy as _
class CustomUserManager(BaseUserManager):
"""
Custom user model where the email address is the unique identifier
and has an is_admin field to allow access to the admin app
"""
def create_user(self, email, password, **extra_fields):
@BrockHerion
BrockHerion / settings.py
Created August 27, 2020 00:22
Settings for DjangoRest and JWT
# Other settings not shown
# Set your auth user to the new user you have created
AUTH_USER_MODEL = 'api.User'
# We need to add our api app and the rest framework to INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
@BrockHerion
BrockHerion / serializers.py
Last active August 27, 2020 00:59
User Registration Serializer
from .models import User
class UserRegistrationSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'email',
'password'
)
@BrockHerion
BrockHerion / serializers.py
Last active August 27, 2020 00:59
User Login Serializer
from rest_framework import serializers
from rest_framework_simplejwt.tokens import RefreshToken
class UserLoginSerializer(serializers.Serializer):
email = serializers.EmailField()
password = serializers.CharField(max_length=128, write_only=True)
access = serializers.CharField(read_only=True)
refresh = serializers.CharField(read_only=True)
role = serializers.CharField(read_only=True)
@BrockHerion
BrockHerion / serializers.py
Last active August 27, 2020 02:26
Normal User serializer
class UserListSerializer(serializers.ModelSerializer):
class Meta:
model = AuthUser
fields = (
'email',
'role'
)
@BrockHerion
BrockHerion / views.py
Created August 27, 2020 00:58
Registration, Login, and All Users Views
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import AllowAny, IsAuthenticated
from .serializers import (
UserRegistrationSerializer,
UserLoginSerializer,
UserListSerializer
)
@BrockHerion
BrockHerion / views.py
Created August 27, 2020 01:00
Login View
class AuthUserLoginView(APIView):
serializer_class = UserLoginSerializer
permission_classes = (AllowAny, )
def post(self, request):
serializer = self.serializer_class(data=request.data)
valid = serializer.is_valid(raise_exception=True)
if valid:
status_code = status.HTTP_200_OK
@BrockHerion
BrockHerion / views.py
Created August 27, 2020 01:03
All Users View
class UserListView(APIView):
serializer_class = UserListSerializer
permission_classes = (IsAuthenticated,)
def get(self, request):
user = request.user
if user.role != 1:
response = {
'success': False,
'status_code': status.HTTP_403_FORBIDDEN,