Skip to content

Commit 77aa3c2

Browse files
committed
second commit
1 parent 6bf6c0a commit 77aa3c2

File tree

7 files changed

+111
-24
lines changed

7 files changed

+111
-24
lines changed

server/djangoapp/urls.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
# Uncomment the imports before you add the code
2-
# from django.urls import path
2+
from django.urls import path
33
from django.conf.urls.static import static
44
from django.conf import settings
5-
# from . import views
5+
from . import views
66

77
app_name = 'djangoapp'
88
urlpatterns = [
99
# # path for registration
1010

1111
# path for login
12-
# path(route='login', view=views.login_user, name='login'),
12+
path(route='login', view=views.login_user, name='login'),
13+
path(route='logout', view=views.logout_request, name='logout'),
14+
path(route='register', view=views.registration, name='register'),
1315

1416
# path for dealer reviews view
1517

server/djangoapp/views.py

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
# Uncomment the required imports before adding the code
22

3-
# from django.shortcuts import render
4-
# from django.http import HttpResponseRedirect, HttpResponse
5-
# from django.contrib.auth.models import User
6-
# from django.shortcuts import get_object_or_404, render, redirect
7-
# from django.contrib.auth import logout
8-
# from django.contrib import messages
9-
# from datetime import datetime
3+
from django.shortcuts import render
4+
from django.http import HttpResponseRedirect, HttpResponse
5+
from django.contrib.auth.models import User
6+
from django.shortcuts import get_object_or_404, render, redirect
7+
from django.contrib.auth import logout
8+
from django.contrib import messages
9+
from datetime import datetime
1010

1111
from django.http import JsonResponse
1212
from django.contrib.auth import login, authenticate
1313
import logging
1414
import json
1515
from django.views.decorators.csrf import csrf_exempt
16-
# from .populate import initiate
16+
from .populate import initiate
1717

1818

1919
# Get an instance of a logger
@@ -39,12 +39,45 @@ def login_user(request):
3939
return JsonResponse(data)
4040

4141
# Create a `logout_request` view to handle sign out request
42-
# def logout_request(request):
42+
def logout_request(request):
43+
logout(request) # Terminate user session
44+
data = {"userName":""} # Return empty username
45+
return JsonResponse(data)
4346
# ...
4447

4548
# Create a `registration` view to handle sign up request
46-
# @csrf_exempt
47-
# def registration(request):
49+
@csrf_exempt
50+
def registration(request):
51+
context = {}
52+
53+
# Load JSON data from the request body
54+
data = json.loads(request.body)
55+
username = data['userName']
56+
password = data['password']
57+
first_name = data['firstName']
58+
last_name = data['lastName']
59+
email = data['email']
60+
username_exist = False
61+
email_exist = False
62+
try:
63+
# Check if user already exists
64+
User.objects.get(username=username)
65+
username_exist = True
66+
except:
67+
# If not, simply log this is a new user
68+
logger.debug("{} is new user".format(username))
69+
70+
# If it is a new user
71+
if not username_exist:
72+
# Create user in auth_user table
73+
user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name,password=password, email=email)
74+
# Login the user and redirect to list page
75+
login(request, user)
76+
data = {"userName":username,"status":"Authenticated"}
77+
return JsonResponse(data)
78+
else :
79+
data = {"userName":username,"error":"Already Registered"}
80+
return JsonResponse(data)
4881
# ...
4982

5083
# # Update the `get_dealerships` view to render the index page with

server/djangoproj/settings.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
# SECURITY WARNING: don't run with debug turned on in production!
2929
DEBUG = True
3030

31-
ALLOWED_HOSTS = []
32-
CSRF_TRUSTED_ORIGINS = []
31+
ALLOWED_HOSTS=['localhost','https://baamranemoua-8000.theianext-1-labs-prod-misc-tools-us-east-0.proxy.cognitiveclass.ai/']
32+
CSRF_TRUSTED_ORIGINS=['https://baamranemoua-8000.theianext-1-labs-prod-misc-tools-us-east-0.proxy.cognitiveclass.ai/']
3333

3434
REST_FRAMEWORK = {
3535
'DEFAULT_AUTHENTICATION_CLASSES': [],
@@ -61,7 +61,11 @@
6161
TEMPLATES = [
6262
{
6363
'BACKEND': 'django.template.backends.django.DjangoTemplates',
64-
'DIRS': [],
64+
'DIRS': [
65+
os.path.join(BASE_DIR, 'frontend/static'),
66+
os.path.join(BASE_DIR, 'frontend/build'),
67+
os.path.join(BASE_DIR, 'frontend/build/static'),
68+
],
6569
'APP_DIRS': True,
6670
'OPTIONS': {
6771
'context_processors': [
@@ -134,5 +138,8 @@
134138

135139
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
136140

137-
STATICFILES_DIRS = []
138-
141+
STATICFILES_DIRS = [
142+
os.path.join(BASE_DIR, 'frontend/static'),
143+
os.path.join(BASE_DIR, 'frontend/build'),
144+
os.path.join(BASE_DIR, 'frontend/build/static'),
145+
]

server/djangoproj/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@
2323
path('admin/', admin.site.urls),
2424
path('djangoapp/', include('djangoapp.urls')),
2525
path('', TemplateView.as_view(template_name="Home.html")),
26-
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
26+
path('login/', TemplateView.as_view(template_name="index.html")),
27+
path('register/', TemplateView.as_view(template_name="index.html")), ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

server/frontend/package-lock.json

Lines changed: 27 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/frontend/src/App.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import LoginPanel from "./components/Login/Login"
2+
import Register from "./components/Register/Register";
23
import { Routes, Route } from "react-router-dom";
34

45
function App() {
56
return (
67
<Routes>
78
<Route path="/login" element={<LoginPanel />} />
9+
<Route path="/register" element={<Register />} />
810
</Routes>
911
);
1012
}

server/frontend/static/Home.html

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,25 @@
77
<script>
88

99
const logout = async (e) => {
10-
//Include the code for logout here.
10+
// Build logout URL and Make GET request to logout endpoint
11+
let logout_url = window.location.origin+"/djangoapp/logout";
12+
const res = await fetch(logout_url, {
13+
method: "GET",
14+
});
15+
16+
const json = await res.json();
17+
if (json) {
18+
// Clear session storage and reload page
19+
let username = sessionStorage.getItem('username');
20+
sessionStorage.removeItem('username');
21+
window.location.href = window.location.origin;
22+
window.location.reload();
23+
// Notify user of logout
24+
alert("Logging out "+username+"...")
25+
}
26+
else {
27+
alert("The user could not be logged out.")
28+
}
1129
};
1230

1331
let checkSession = ()=>{

0 commit comments

Comments
 (0)