From b12692dc5f2ce5c62549d9da4f3596f5667e77f5 Mon Sep 17 00:00:00 2001 From: Elijah Lucian Date: Sun, 11 Apr 2021 17:43:26 -0700 Subject: [PATCH] registration and login --- devops/nginx/Dockerfile | 3 ++ devops/nginx/entrypoint.sh | 5 +++ devops/nginx/nginx.conf | 49 +++++++++++++++++++++++++++ devops/var/www/index.html | 10 ++++++ docker-compose.yml | 14 +++++++- frontend/src/api/index.ts | 4 +-- frontend/src/app/CoreLayout.tsx | 2 +- frontend/src/app/forms/NewUser.tsx | 10 +++--- frontend/src/app/pages/Login.tsx | 39 ++++++++++----------- frontend/src/contexts/UserContext.tsx | 1 - server/server/settings.py | 2 +- 11 files changed, 108 insertions(+), 31 deletions(-) create mode 100644 devops/nginx/Dockerfile create mode 100644 devops/nginx/entrypoint.sh create mode 100644 devops/nginx/nginx.conf create mode 100644 devops/var/www/index.html diff --git a/devops/nginx/Dockerfile b/devops/nginx/Dockerfile new file mode 100644 index 0000000..2a3adb9 --- /dev/null +++ b/devops/nginx/Dockerfile @@ -0,0 +1,3 @@ +FROM nginx:1.14.2 + +COPY nginx.conf /etc/nginx/nginx.conf \ No newline at end of file diff --git a/devops/nginx/entrypoint.sh b/devops/nginx/entrypoint.sh new file mode 100644 index 0000000..c3e2899 --- /dev/null +++ b/devops/nginx/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cat /nginx.conf > /etc/nginx/nginx.conf + +exec "$@" \ No newline at end of file diff --git a/devops/nginx/nginx.conf b/devops/nginx/nginx.conf new file mode 100644 index 0000000..6c04403 --- /dev/null +++ b/devops/nginx/nginx.conf @@ -0,0 +1,49 @@ +worker_processes 1; + +events { worker_connections 1024; } + +http { + upstream client { + server frontend:3000; + } + + server { + listen 80; + error_log /var/log/nginx/error.log; + access_log /var/log/nginx/access.log; + client_max_body_size 10M; + + location / { + proxy_pass http://client; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Ssl on; # Optional + proxy_set_header X-Forwarded-Port $server_port; + proxy_set_header X-Forwarded-Host $host; + # proxy_set_header X-Forwarded-Host $server_name; + } + + location /api { + proxy_pass http://server:8000; + rewrite ^/api(.*)$ $1 break; + } + + location /cable { + proxy_pass http://server:8000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + # rewrite ^/cable(.*)$ $1 break; + } + + location /socksjs-node { + proxy_pass http://server:8000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + # rewrite ^/cable(.*)$ $1 break; + } + } +} \ No newline at end of file diff --git a/devops/var/www/index.html b/devops/var/www/index.html new file mode 100644 index 0000000..ee86e94 --- /dev/null +++ b/devops/var/www/index.html @@ -0,0 +1,10 @@ + + + + + + + Document + + + diff --git a/docker-compose.yml b/docker-compose.yml index defb55c..919f0f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,18 @@ version: "3.8" services: + nginx: + build: + context: ./devops/nginx + depends_on: + - frontend + - server + volumes: + - ./devops/nginx/nginx.conf:/etc/nginx/nginx.conf + ports: + - 80:80 + - 443:443 + frontend: build: context: ./frontend @@ -20,4 +32,4 @@ services: - ./server:/usr/src/server ports: - 8000:8000 - command: ["python", "manage.py", "runserver"] + command: ["python", "manage.py", "runserver", "0.0.0.0:8000"] diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index 7ab3cc6..16565f1 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -7,10 +7,10 @@ import { JWT, getJWT, setHeaders, setJWT, wipeJWT } from '../utils/jwt' const dev = process.env.NODE_ENV === 'development' export const logIn = async (username: string, password: string) => { - if (dev) return mockUser + // if (dev) return mockUser try { - const { data: jwt } = await axios.post(`/api/login`, { + const { data: jwt } = await axios.post(`/api/dj-rest-auth/login/`, { username, password, }) diff --git a/frontend/src/app/CoreLayout.tsx b/frontend/src/app/CoreLayout.tsx index 0a08ae5..4d6724a 100644 --- a/frontend/src/app/CoreLayout.tsx +++ b/frontend/src/app/CoreLayout.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { Layout } from 'antd' import { useUserContext } from '../contexts/UserContext' import { Login } from './pages/Login' @@ -14,6 +13,7 @@ export const CoreLayout = () => { const routes: NavRoute[] = [ { exact: true, path: '/', label: 'Dashboard', component: Dashboard }, { path: '/profile', label: 'Profile', component: Profile }, + { path: '/login', label: 'Login', component: Login }, { path: '/new/user', label: 'New User', component: NewUser }, ] diff --git a/frontend/src/app/forms/NewUser.tsx b/frontend/src/app/forms/NewUser.tsx index eec15ab..f837b84 100644 --- a/frontend/src/app/forms/NewUser.tsx +++ b/frontend/src/app/forms/NewUser.tsx @@ -2,8 +2,6 @@ import { Button, Form, Input, Layout, message } from 'antd' import axios from 'axios' import { User } from '../../types' -axios.defaults.baseURL = 'http://localhost:8080/' - type NewUserForm = Omit & { password1: string password2: string @@ -19,7 +17,7 @@ export const NewUser = () => { return } - axios.post(`/dj-rest-auth/registration`, user) + axios.post(`/dj-rest-auth/registration/`, user) } console.log('ASDFUASDJF') @@ -28,14 +26,14 @@ export const NewUser = () => {
- + - + - + diff --git a/frontend/src/app/pages/Login.tsx b/frontend/src/app/pages/Login.tsx index 74ab501..8aedaad 100644 --- a/frontend/src/app/pages/Login.tsx +++ b/frontend/src/app/pages/Login.tsx @@ -1,31 +1,32 @@ -import { FormEvent, useState } from 'react' +import { Button, Form, Input } from 'antd' +import { useForm } from 'antd/lib/form/Form' import { useUserContext } from '../../contexts/UserContext' +type Credentials = { + username: string + password: string +} + export const Login = () => { const { handleLogin } = useUserContext() - const [username, setUsername] = useState('') - const [password, setPassword] = useState('') - - const handleSubmit = (e: FormEvent) => { - e.preventDefault() + const [form] = useForm() + const handleSubmit = ({ username, password }: Credentials) => { handleLogin(username, password) } return ( - - setUsername(e.target.value)} - type="text" - value={username} - /> - setPassword(e.target.value)} - type="text" - value={password} - /> - - +
+ + + + + + + +
) } diff --git a/frontend/src/contexts/UserContext.tsx b/frontend/src/contexts/UserContext.tsx index 78ce753..19eaae9 100644 --- a/frontend/src/contexts/UserContext.tsx +++ b/frontend/src/contexts/UserContext.tsx @@ -12,7 +12,6 @@ import { useHistory } from 'react-router' import { User } from '../types' import { getLoggedInUser, logIn, logOut } from '../api' -import axios from 'axios' type Props = { children: React.ReactNode diff --git a/server/server/settings.py b/server/server/settings.py index 43c4067..cbfd9a3 100644 --- a/server/server/settings.py +++ b/server/server/settings.py @@ -25,7 +25,7 @@ SECRET_KEY = 'ayr0nbsni^%h!xbeplx_v#b^cuj^adjg2*z7t@+ht7c=7*1u$e' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['server'] # Application definition