registration and login
This commit is contained in:
parent
46e58722d6
commit
b12692dc5f
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
|
||||
|
|
Loading…
Reference in New Issue
Block a user