Skip to content

Commit f2233c5

Browse files
authored
Merge pull request #12 from ChinZJ/feature/user-service
feat(user-service) Implement login, authentication, authorization and containerization
2 parents d6a2547 + 29d9530 commit f2233c5

File tree

112 files changed

+11017
-4192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+11017
-4192
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,6 @@ npm-debug.logcoverage/
3434
coverage/
3535

3636
.vscode/
37+
38+
# Database files
39+
/user-service/db

docker-compose.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
services:
22
# --- DATABASES ---
3+
user-db-mongodb:
4+
image: mongo
5+
container_name: user-db-mongodb
6+
restart: unless-stopped
7+
env_file:
8+
- .env
9+
volumes:
10+
- ./user-service/db:/data/db
11+
networks:
12+
- app-network
13+
14+
# For development purposes
15+
user-db-mongo-express:
16+
image: mongo-express
17+
container_name: user-db-mongo-express
18+
restart: unless-stopped
19+
ports:
20+
- 8084:8081
21+
env_file:
22+
- .env
23+
networks:
24+
- app-network
25+
depends_on:
26+
- user-db-mongodb
27+
28+
329
question-db-pg:
430
image: postgres:14-alpine
531
container_name: question-db-pg
@@ -59,6 +85,9 @@ services:
5985
- /app/node_modules
6086
networks:
6187
- app-network
88+
depends_on:
89+
- user-db-mongodb
90+
command: sh -c "npm run seed:admin || true && npm run dev" # for production change to npm start
6291

6392
# Question service
6493
question-service:

frontend/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,6 @@ dist-ssr
2323
*.njsproj
2424
*.sln
2525
*.sw?
26+
27+
.vite
2628
.env

frontend/src/App.tsx

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,49 @@
1-
import {Route, Routes} from 'react-router-dom';
1+
import {Route, Routes, useNavigate} from 'react-router-dom';
22
import Home from './pages/home';
33
import Register from './pages/register';
4+
import Login from './pages/login';
45
import Input from './collaboration/pages/Input';
56
import {CollabPage} from './collaboration/pages/CollabPage';
7+
import VerifyEmail from './pages/verifyEmail';
8+
import Profile from './pages/profile';
9+
import AuthContainer from './components/authContainer';
10+
import {setNavigate} from './lib/navigation';
11+
import ForgotPassword from './pages/forgotPassword';
12+
import ResetPassword from './pages/resetPassword';
13+
import UserProfile from './pages/userProfile';
14+
import ProfileSettings from './pages/profileSettings';
15+
import CompleteProfile from './pages/completeProfile';
16+
import AdminManagement from './pages/adminManagement';
17+
import AdminContainer from './components/adminContainer';
618

719
function App() {
20+
const navigate = useNavigate();
21+
setNavigate(navigate); // Allows use of navigate within Axios.
822
return (
923
<Routes>
10-
<Route path="/" element={<Home />} />
24+
<Route path="/home" element={<Home />} />
1125
<Route path="/register" element={<Register />} />
12-
<Route path="room" element={<Input />} />
13-
<Route path="room/:roomId" element={<CollabPage />} />
26+
<Route path="/complete-profile" element={<CompleteProfile />} />
27+
<Route path="/email/verify/:code" element={<VerifyEmail />} />
28+
<Route path="/login" element={<Login />} />
29+
<Route path="/password/forgot" element={<ForgotPassword />} />
30+
<Route path="/password/reset" element={<ResetPassword />} />
31+
// Authorized users only (defined as having verfieid email).
32+
<Route path="/" element={<AuthContainer />}>
33+
<Route index element={<Profile />} />
34+
<Route path="profile/" element={<UserProfile />} />
35+
<Route path="profile/settings" element={<ProfileSettings />} />
36+
<Route path="room" element={<Input />} />
37+
<Route path="room/:roomId" element={<CollabPage />} />
38+
<Route
39+
path="admin/manage"
40+
element={
41+
<AdminContainer>
42+
<AdminManagement />
43+
</AdminContainer>
44+
}
45+
/>
46+
</Route>
1447
</Routes>
1548
);
1649
}

frontend/src/assets/alert-icon.svg

Lines changed: 7 additions & 0 deletions
Loading

frontend/src/assets/default-profile-icon.svg

Lines changed: 63 additions & 0 deletions
Loading

frontend/src/assets/lock-icon.svg

Lines changed: 7 additions & 0 deletions
Loading

frontend/src/assets/profile/flag-icon.svg

Lines changed: 7 additions & 0 deletions
Loading
Lines changed: 5 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)