diff --git a/backend/API/urls.py b/backend/API/urls.py index 8abe56c..8e53d8b 100644 --- a/backend/API/urls.py +++ b/backend/API/urls.py @@ -3,21 +3,19 @@ from . import views urlpatterns = [ - path('oauth2/', views.index, name='index'), path('oauth2/logout/', views.discord_logout, name='logout'), path('oauth2/login/', views.discord_login, name='login'), path('oauth2/login/redirect/', views.discord_login_redirect, name='loginredirect'), - path('api/form/list', views.formlist, name='formlist'), - path('api/responses/', views.responselist, name='responselist'), - path('api/form/create/', views.formcreateresponse, name='formcreateresponse'), + path('api/form/list', views.formlist, name='formlist'), + path('api/form/create/', views.formcreateresponse, name='formcreateresponse'), path('api/form/response/', views.formresponse, name='formresponse'), path('api/user/create/', views.userCreate, name='userCreate'), path('api/user/login/', views.userLogin, name='userLogin'), path('api/user/logout/', views.userLogout, name='userLogout'), - path('api/user/server/', views.userServers, name='userServer'), + path('api/user/server/', views.userServers, name='userServer'), path('api/user/channels/', views.serverChannels, name='serverChannels'), - path('api/user/information', views.userInformation, name='userInformation'), - path('api/bot/forms/', views.botFormList, name='botFormList'), + path('api/user/information', views.userInformation, name='userInformation'), + path('api/bot/forms/', views.botFormList, name='botFormList'), path('api/bot/response/', views.botFormResponse, name='botFormResponse'), path('api/user/dashboard', views.dashboardInformation, name='dashboardInformation'), path('api/bot/form/response/', views.botFormResponseList, name='botFormResponseList'), diff --git a/backend/API/views.py b/backend/API/views.py index fb1bbb1..f6387a3 100644 --- a/backend/API/views.py +++ b/backend/API/views.py @@ -22,15 +22,16 @@ redirect_url_discord = os.getenv("REDIRECT_URL_DISCORD") +''' Redirects to Discord Login Page ''' def discord_login(request): # oauth2/login/redirect/ return redirect(redirect_url_discord) - +''' Route for logging out ''' def discord_logout(request): # oauth2/logout/ logout(request) return JsonResponse("Succesfully Logged out", safe=False) - +''' Redirect route after discord oauth, Obtains access token to interact with Discord API ''' def discord_login_redirect(request): # oauth2/login/redirect/ code = request.GET.get('code') access_token = getAccessToken(code) @@ -56,17 +57,9 @@ def discord_login_redirect(request): # oauth2/login/redirect/ atoken.save() print(token.key) #redirect_url_react = 'http://localhost:3000/dashboard?token='+token.key - return redirect('http://localhost:3000?user='+str(token.key)) - - -@login_required(login_url='login/') -@api_view(["GET"]) -@authentication_classes([TokenAuthentication]) -def index(request): # oauth2/ - print(request.user) - return JsonResponse("Have false", safe=False) - + return redirect('http://localhost?user='+str(token.key)) +''' Provides list of forms present in the database ''' @api_view(["GET"]) @authentication_classes([TokenAuthentication]) @permission_classes([IsAuthenticated]) @@ -79,16 +72,7 @@ def formlist(request): # api/form/list return Response("You are not logged in!") - -@api_view(["GET"]) -@authentication_classes([TokenAuthentication]) -def responselist(request): # api/responses/ - print(request.user) - response = FormResponse.objects.all() - serializer = FormResponseSerializer(response, many=True) - return Response(serializer.data) - - +''' Provides list of responses made by the user ''' @api_view(["GET"]) def formresponse(request, FormName): # api/form/response/ form = FormCreate.objects.get(FormName=FormName, userid=request.user) @@ -96,7 +80,7 @@ def formresponse(request, FormName): # api/form/response/ serializer = FormResponseSerializer(response, many=True) return Response(serializer.data) - +''' To submit a response to a form ''' @api_view(["POST"]) @authentication_classes([TokenAuthentication]) def formcreateresponse(request): # api/form/create/ @@ -115,7 +99,7 @@ def formcreateresponse(request): # api/form/create/ return Response(serializer.data) - +''' Creating user and storing in the database ''' @api_view(['GET', 'POST']) def userCreate(request): # api/user/create/ access_token = request.data.get('access_token') @@ -128,21 +112,21 @@ def userCreate(request): # api/user/create/ atoken = AccessTokenTable(user=discord_user, access_token=access_token) atoken.save() - +''' Custom logging in feature, It's a hacky mechanism ''' @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) def userLogin(request): # api/user/login/ login = LoginTable.objects.get(user=request.user) return JsonResponse(login.loggedIn, safe=False) - +''' Custom logout feature, Also a hacky mechanism ''' @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) def userLogout(request): # api/user/logout/ login = LoginTable.objects.get(user=request.user) return JsonResponse('False', safe=False) - +''' Fetch user information such as avatar and tag ''' @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) def userInformation(request): # api/user/information @@ -156,7 +140,7 @@ def userInformation(request): # api/user/information } return JsonResponse(jsondata, safe=False) - +''' Fetch all the servers user is a part of ''' @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) def userServers(request): # api/user/server/ @@ -164,7 +148,7 @@ def userServers(request): # api/user/server/ servers = getUserServers(access_token) return Response(servers) - +''' Fetch all the responses made by the user ''' @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) def userResponses(request): # api/user/responses @@ -172,7 +156,7 @@ def userResponses(request): # api/user/responses serializer = UserResponseSerializer(responses, many=True) return Response(serializer.data) - +''' Fetch all the channels present in a selected server''' @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) def serverChannels(request, ServerID): # api/user/channels/ @@ -181,14 +165,14 @@ def serverChannels(request, ServerID): # api/user/channels/ channels = getServerChannels(access_token, ServerID) return Response(channels) - +''' List of forms present in a given server ''' @api_view(['GET', 'POST']) def botFormList(request, serverid): # api/bot/forms/ forms = FormCreate.objects.filter(serverid=serverid) serializer = FormBotCreateSerializer(forms, many=True) return Response(serializer.data) - +''' Submit response to a given form ''' @api_view(['GET', 'POST']) def botFormResponse(request): # api/bot/response/ serializer = FormBotResponseSerializer(data=request.data, many=False) @@ -203,7 +187,7 @@ def botFormResponse(request): # api/bot/response/ print(newformresponse) return Response(serializer.data) - +''' Fetch responses for a given form ''' @api_view(['GET', 'POST']) # api/bot/form/response/ def botFormResponseList(request, FormName): form = FormCreate.objects.get(FormName=FormName) @@ -211,7 +195,7 @@ def botFormResponseList(request, FormName): serializer = FormResponseSerializer(responses, many=True) return Response(serializer.data) - +''' Fetch dashboard information for the frontend ''' @api_view(['GET']) @authentication_classes([TokenAuthentication]) # api/user/dashboard def dashboardInformation(request): diff --git a/docker-compose.yml b/docker-compose.yml index 4fd97cc..a157b8d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,16 @@ version: "3.0" services: + web: + image: nginx + ports: + - "80:80" + volumes: + - ./nginx/:/etc/nginx/conf.d + depends_on: + - frontend + - backend + frontend: build: ./frontend ports: diff --git a/frontend/src/Utils/constants.js b/frontend/src/Utils/constants.js index a41421e..cad534a 100644 --- a/frontend/src/Utils/constants.js +++ b/frontend/src/Utils/constants.js @@ -1,6 +1,6 @@ -const BASE_URL = "http://localhost:8000"; +const BASE_URL = "http://localhost:80"; -export const LOGIN_URL = `${BASE_URL}/oauth2/login`; +export const LOGIN_URL = `${BASE_URL}/api/oauth2/login`; export const USER_URL = `${BASE_URL}/api/user`; export const USER_INFORMATION_URL = `${USER_URL}/information`; diff --git a/nginx/default.conf b/nginx/default.conf new file mode 100644 index 0000000..fe2cd10 --- /dev/null +++ b/nginx/default.conf @@ -0,0 +1,9 @@ +server{ + listen 80; + location / { + proxy_pass http://frontend:3000/; + } + location /api { + proxy_pass http://backend:8000/api; + } +} \ No newline at end of file