· 8 years ago · Nov 24, 2017, 09:28 PM
1# Midterm
2
3## Site Header:
4- if a user is logged in, the header shows:
5 - the user's username
6 - a HOME Link to `/resources`
7 - a profile Link
8 - make GET request to `/profile`
9 - a search bar
10 - make a GET request to `/search`
11 - a logout button
12 - makes a POST request to `/logout`
13
14## Routes
15`GET /`
16- if user is logged in:
17 - redirect to `/resources`
18- if user is not logged in:
19 - redirect to `/login`
20
21`GET /resources`
22- if user is logged in:
23 - return HTML with
24 - the site header
25 - a list (or table) of resources the user has created, each list item containing:
26 - Title link to `/resources/:id`
27 - The resource URL
28 - redirect to
29 - Description
30 - Tags
31 - Like
32 - unlike button
33 - make a DELETE request to `/delete`
34 - (stretch) a side bar contains all the tags user had
35 - each tag link make a GET request to `/resources/:tagid`
36- if user is not logged in:
37 - redirect to `/login`
38
39`GET /resources/new`
40- if user is logged in:
41 - return HTML with
42 - the site header
43 - a form which contains:
44 - a Title
45 - a text input field for the URL
46 - an optional Description
47 - Tags
48 - mark it as **Like** for the given user
49 - a submit button
50 - makes a POST request to `/resources`
51- if user is not logged in:
52 - redirects to the /login page
53
54`GET /resources/:id`
55- if user is logged in:
56 - return HTML with
57 - the site header
58 - Title
59 - URL
60 - Description
61 - Tag
62 - Comments input form
63 - Comments Submit button
64 - make a POST request to `/resources/:id`
65 - Like button
66 - like
67 - make a POST request to `/like`
68 - unlike
69 - make a DELETE request to `/delete`
70 - Rating input form
71- if user is not logged in:
72 - redirect to `/login`
73- if resources id not exist:
74 - returns HTML with a relevant error message
75
76`GET /resources/:id/profile`
77- if user is logged in:
78 - return HTML with
79 - the site header
80 - edit Username
81 - edit email
82 - edit password
83 - a Submit button
84 - make a POST request to `/resources/:id/profile`
85- if user is not logged in:
86 - redirect to `/login`
87- if resources id not exist:
88 - returns HTML with a relevant error message
89
90`PUT /resources/:id/profile`
91- if user is logged in:
92 - update username/ email/ password
93- if user is not logged in:
94 - redirect to `/login`
95
96`POST /resources`
97- if user is logged in:
98 - create a new row in resource table
99 - create a new row in tag table
100 - create a new row in like table
101 - redirect to `/resources`
102- if user is not logged in:
103 - redirect to `/login`
104
105`PUT /resources/:id`
106- if user is logged in:
107 - update the comment
108 - update rating
109 - update like
110 - make a POST request to `/resources`
111- if user is not logged in:
112 - redirect to `/login`
113
114`POST /like`
115- if user is logged in:
116 - create a new row in like table
117- if user is not logged in:
118 - redirect to `/login`
119
120`DELETE /delete`
121- if user is logged in:
122 - delete a row in like table
123- if user is not logged in:
124 - redirect to `/login`
125
126`GET /search`
127- if user is logged in:
128 - show the search result
129- if user is not logged in:
130 - redirect to `/login`
131(stretch)
132`GET /resources/:tagid`
133- if user is logged in:
134 - show all the resources belong to that tag
135- if user is not logged in:
136 - redirect to `/login`
137(stretch)
138`PUT /resources/:tagid`
139- if user is logged in:
140 - update resources belong to tag
141- if user is not logged in:
142 - redirect to `/login`
143
144`GET /login`
145- if user is logged in:
146 - redirects to `/resources`
147- if user is not logged in:
148 - returns HTML with:
149 - a login form which contains:
150 - input fields for email and password
151 - submit button that
152 - makes a POST request to `/login`
153 - a register form which contains:
154 - input fields for email and password
155 - a register button
156 - makes a POST request to `/register`
157
158`POST /login`
159- if email and password params match an existing user:
160 - sets a cookie
161 - redirects to `/resources`
162- if email and password params don’t match an existing user:
163 - returns HTML with a relevant error message
164
165`POST /register`
166- if email or password are empty:
167 - returns HTML with a relevant error message
168- if email already exists:
169 - returns HTML with a relevant error message
170- otherwise:
171 - creates a new user
172 - encrypts the new user’s password with `bcrypt`
173 - sets a cookie
174 - redirects to `/resources`
175
176`POST /logout`
177- deletes cookie
178- redirects to `/login`