registration and login
This commit is contained in:
		
							
								
								
									
										3
									
								
								devops/nginx/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								devops/nginx/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| FROM nginx:1.14.2 | ||||
|  | ||||
| COPY nginx.conf /etc/nginx/nginx.conf | ||||
							
								
								
									
										5
									
								
								devops/nginx/entrypoint.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								devops/nginx/entrypoint.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| cat /nginx.conf > /etc/nginx/nginx.conf | ||||
|  | ||||
| exec "$@" | ||||
							
								
								
									
										49
									
								
								devops/nginx/nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								devops/nginx/nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -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; | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										10
									
								
								devops/var/www/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								devops/var/www/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
|   <head> | ||||
|     <meta charset="UTF-8" /> | ||||
|     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <title>Document</title> | ||||
|   </head> | ||||
|   <body></body> | ||||
| </html> | ||||
| @@ -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"] | ||||
|   | ||||
| @@ -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<JWT>(`/api/login`, { | ||||
|     const { data: jwt } = await axios.post<JWT>(`/api/dj-rest-auth/login/`, { | ||||
|       username, | ||||
|       password, | ||||
|     }) | ||||
|   | ||||
| @@ -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 }, | ||||
|   ] | ||||
|  | ||||
|   | ||||
| @@ -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<User, 'id'> & { | ||||
|   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 = () => { | ||||
|     <Layout> | ||||
|       <Layout.Content> | ||||
|         <Form form={form} onFinish={handleFinish}> | ||||
|           <Form.Item label="username" name="name"> | ||||
|           <Form.Item label="username" name="username"> | ||||
|             <Input></Input> | ||||
|           </Form.Item> | ||||
|           <Form.Item label="email" name="email"> | ||||
|             <Input></Input> | ||||
|             <Input type="email"></Input> | ||||
|           </Form.Item> | ||||
|           <Form.Item label="password" name="password1"> | ||||
|             <Input></Input> | ||||
|             <Input minLength={8}></Input> | ||||
|           </Form.Item> | ||||
|           <Form.Item label="confirm" name="password2"> | ||||
|             <Input></Input> | ||||
|   | ||||
| @@ -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<Credentials>() | ||||
|  | ||||
|   const handleSubmit = ({ username, password }: Credentials) => { | ||||
|     handleLogin(username, password) | ||||
|   } | ||||
|  | ||||
|   return ( | ||||
|     <form onSubmit={handleSubmit}> | ||||
|       <input | ||||
|         onChange={(e) => setUsername(e.target.value)} | ||||
|         type="text" | ||||
|         value={username} | ||||
|       /> | ||||
|       <input | ||||
|         onChange={(e) => setPassword(e.target.value)} | ||||
|         type="text" | ||||
|         value={password} | ||||
|       /> | ||||
|       <button type="submit">Login!</button> | ||||
|     </form> | ||||
|     <Form form={form} onFinish={handleSubmit}> | ||||
|       <Form.Item label="username" name="username"> | ||||
|         <Input /> | ||||
|       </Form.Item> | ||||
|       <Form.Item label="password" name="password"> | ||||
|         <Input type="password" /> | ||||
|       </Form.Item> | ||||
|       <Button type="primary" htmlType="submit"> | ||||
|         Login! | ||||
|       </Button> | ||||
|     </Form> | ||||
|   ) | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user