Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
8b6b639
Updated member list
jaysoncena Feb 14, 2018
5b5d850
Merge pull request #1 from cs5331-group11/jayson/add_members
jaysoncena Feb 14, 2018
0cdf62b
created database
CarolineAst Feb 18, 2018
796a7c0
model and diary endpoints
rafaelperes Feb 18, 2018
b60791d
delete folder
CarolineAst Feb 19, 2018
486768f
created database, but might need to modify it
CarolineAst Feb 19, 2018
21b82a8
update
CarolineAst Feb 21, 2018
b6fb05d
add a file with function to use to access the database.
CarolineAst Feb 21, 2018
ef4a195
changed files
CarolineAst Feb 24, 2018
4ade9af
optimize run.sh to not cleanup on all running docker containers
jaysoncena Feb 24, 2018
8e1d73f
move from apache to nginx-modsecurity
jaysoncena Feb 24, 2018
388978b
move flask app port from 8080 to 8081
jaysoncena Feb 24, 2018
9f547ce
put dependencies to requirements.txt
jaysoncena Feb 24, 2018
8f7dc4e
fix ratelimit nginx conf
jaysoncena Feb 24, 2018
cf05f1d
enable CSP security
jaysoncena Feb 24, 2018
dff1791
endpoints for 'diary' get and post,'diary/create', 'diary/delete' and…
rafaelperes Feb 25, 2018
e18d60c
Merge pull request #2 from jaysoncena/users_and_diary
jaysoncena Feb 25, 2018
918c44d
Merge branch 'master' into jayson/docker_and_nginx-modsecurity
jaysoncena Feb 25, 2018
177f998
Merge pull request #1 from jaysoncena/jayson/docker_and_nginx-modsecu…
jaysoncena Feb 25, 2018
9a3da6e
Refactor auth and fix some responses
jaysoncena Feb 25, 2018
9016aec
Add uuid,binascii to requirements.txt
jaysoncena Feb 25, 2018
a84d0e0
add basic test framework
jaysoncena Feb 26, 2018
8b13da1
Merge pull request #3 from jaysoncena/jayson/refactor_auth
jaysoncena Feb 27, 2018
e59fbbb
Merge pull request #4 from jaysoncena/jayson/test_framework
jaysoncena Feb 27, 2018
058878c
Remove binascii, built-in on python 2.x and 3.x
jaysoncena Mar 1, 2018
6e0953b
Merge pull request #5 from jaysoncena/jayson/remove-binascii
jaysoncena Mar 1, 2018
588b6a1
Add cs5331_db.conf to docker container and fix path on app.py
jaysoncena Mar 1, 2018
f95e79b
Merge pull request #6 from jaysoncena/jayson/fix-sqlite-conf-path
jaysoncena Mar 2, 2018
5eaf160
add conf file
jaysoncena Mar 2, 2018
6403c5b
Merge pull request #7 from jaysoncena/jayson/conf-file
jaysoncena Mar 2, 2018
25d63f1
disable ratelimit on /users endpoint
jaysoncena Mar 2, 2018
08644e1
Merge pull request #8 from jaysoncena/jayson/disable-some-security
jaysoncena Mar 2, 2018
c9e371e
front end base
jaliyajcw Feb 25, 2018
63a2225
login page
jaliyajcw Feb 25, 2018
d2d5ebb
registration page
jaliyajcw Feb 25, 2018
539f043
home page / public diary entries
jaliyajcw Feb 25, 2018
2019a47
Revert "home page / public diary entries"
jaliyajcw Feb 25, 2018
e5746e7
Revert "Revert "home page / public diary entries""
jaliyajcw Feb 25, 2018
e311a09
Revert "Revert "Revert "home page / public diary entries"""
jaliyajcw Feb 25, 2018
8940dfa
home page / public diary entries
jaliyajcw Feb 25, 2018
e93f6d1
private diary , view, create, update, delete
jaliyajcw Feb 25, 2018
e076e70
authentication
jaliyajcw Feb 25, 2018
c0400d3
global access/configuration point
jaliyajcw Feb 25, 2018
c975f21
configure api host
jaliyajcw Feb 25, 2018
435113d
ajax facade for cors
jaliyajcw Feb 25, 2018
0454107
glob config updated
jaliyajcw Feb 25, 2018
ba085dc
updated pages for CORS requests
jaliyajcw Feb 25, 2018
8cd3b0f
css update
jaliyajcw Mar 1, 2018
6cc8972
fix auth fail case, set resp code to 200
jaysoncena Mar 2, 2018
d16c7bb
make /meta/members endpoint public
jaysoncena Mar 2, 2018
534db8a
fix /users path
jaysoncena Mar 2, 2018
228b8f2
Set endpoint /users from GET to POST
jaysoncena Mar 2, 2018
4a4793f
fix /users path
jaysoncena Mar 2, 2018
9d0681d
Update team_members.txt
jaysoncena Mar 2, 2018
63c8dbc
Merge pull request #10 from jaysoncena/jayson/auth_fixes
jaysoncena Mar 2, 2018
4965494
add members page
jaliyajcw Mar 2, 2018
75a0dc6
Merge pull request #11 from jaysoncena/jaliyajcw/fix-frontend-branch
jaysoncena Mar 2, 2018
e16b2a8
Fix pasing token to test cases
jaysoncena Mar 2, 2018
7a89fac
switch decorators to fix auth issue
jaysoncena Mar 2, 2018
be23a29
Refactor /users endpoint
jaysoncena Mar 2, 2018
097b7c0
Merge pull request #12 from jaysoncena/jayson/fix-test-and-auth-decor…
jaysoncena Mar 2, 2018
0d508fc
add Access-Control-Allow-Headers: Content-Type on API response
jaysoncena Mar 2, 2018
ad257d3
Merge pull request #13 from jaysoncena/jayson/cors_access-control-all…
jaysoncena Mar 2, 2018
f64af89
id_user - diary/create and some try catches
rafaelperes Mar 2, 2018
d4e6b84
Add `/users/expire` endpoint
jaysoncena Mar 2, 2018
b3c4d49
Merge pull request #15 from jaysoncena/jayson/expire_endpoint
jaysoncena Mar 2, 2018
82c4b8f
minor update on search
jaliyajcw Mar 3, 2018
1c1a4e8
css3 update
jaliyajcw Mar 3, 2018
9129faa
fix review
rafaelperes Mar 3, 2018
516c649
Merge pull request #14 from jaysoncena/diary_fixes
jaysoncena Mar 3, 2018
219f592
Merge pull request #16 from jaysoncena/jaliyajcw/fix-frontend-branch
jaysoncena Mar 3, 2018
f086b95
test commit
jaliyajcw Mar 4, 2018
55dc1f6
fixed get memers
jaliyajcw Mar 4, 2018
5cf32a7
fixed my diary isPublic
jaliyajcw Mar 4, 2018
0a1e24a
Screehsots
jaliyajcw Mar 4, 2018
1846ac1
Add test cases for diary-related endpoints
jaysoncena Mar 5, 2018
d47d680
diary endpoint fixes
jaysoncena Mar 5, 2018
a2ed449
Merge pull request #17 from jaysoncena/jayson/final-API-fixes
jaysoncena Mar 5, 2018
e441de5
remove IDE files
jaysoncena Mar 5, 2018
97b019d
screenshot
jaliyajcw Mar 5, 2018
53f5d0d
initial update on README.md
jaysoncena Mar 5, 2018
afcefaa
fix on README.md
jaysoncena Mar 5, 2018
3413ccd
backticks onREADME.md
jaysoncena Mar 5, 2018
7f1c14b
Merge pull request #2 from cs5331-group11/caroline/database
jaysoncena Mar 5, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Database access.pdf
Binary file not shown.
38 changes: 30 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,36 @@
FROM ubuntu:latest
#FROM ubuntu:latest
FROM nodeintegration/nginx-modsecurity

# init runit
RUN touch /etc/inittab
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q runit


RUN apt-get update
RUN apt-get install -y python-pip
RUN apt-get install -y apache2
RUN pip install -U pip
RUN pip install -U flask
RUN pip install -U flask-cors
RUN echo "ServerName localhost " >> /etc/apache2/apache2.conf
RUN echo "$user hard nproc 20" >> /etc/security/limits.conf
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
#RUN echo "ServerName localhost " >> /etc/apache2/apache2.conf
RUN echo "$user hard nproc 100" >> /etc/security/limits.conf
ADD ./src/service /service
ADD ./src/html /var/www/html
ADD ./conf/cs5331_db.conf /cs5331_db.conf
EXPOSE 80
EXPOSE 8080
CMD ["/bin/bash", "/service/start_services.sh"]
#CMD ["/bin/bash", "/service/start_services.sh"]

# nginx cleanup
RUN rm -fv /etc/nginx/conf.d/default.conf

# nginx apps
COPY ./resources/nginx/* /etc/nginx/conf.d/

# copy services
COPY resources/service /etc/service
RUN find /etc -name run
RUN chmod +x /etc/service/*/run

# setup runit
COPY ./resources/sbin/runit_bootstrap /usr/sbin/runit_bootstrap
RUN chmod 755 /usr/sbin/runit_bootstrap
ENTRYPOINT ["/usr/sbin/runit_bootstrap"]
108 changes: 81 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# rest-api-development

CS5331 Assignment 1 Project Reference Repository

## Instructions

Your objective is to implement a web application that provides the endpoints
Expand Down Expand Up @@ -53,7 +52,6 @@ sudo ./run.sh
(Docker CE installation instructions are from this
[link](https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository).)

**Please consult your assignment hand-out for detailed setup information.**

## Grading

Expand Down Expand Up @@ -81,63 +79,119 @@ curl http://localhost:8080

If a response is received, you're good to go.

**Please replace the details below with information relevant to your team.**

## Screenshots
### UI Input Validation
![](./img/Registration_MinimumCharacterValidation.JPG)

Please replace the example screenshots with screenshots of your completed
project. Feel free to include more than one.
### Members Page
![](./img/Members.JPG)

![Sample Screenshot](./img/samplescreenshot.png)
### Register Page
![](./img/register.JPG)

## Administration and Evaluation
### Login Page
![](./img/login.JPG)

### Home Page
![](./img/publicDiary_Home.JPG)

Please fill out this section with details relevant to your team.
### Private Diaries Page
![](./img/privateDiary.JPG)

### Create/Update Diary Page
![](./img/CreateNew.JPG)

## Administration and Evaluation
### Team Members

1. Member 1 Name
2. Member 2 Name
3. Member 3 Name
4. Member 4 Name
1. Caroline Astolfi
2. Jaliya Chathuranga Waidyathilake
3. Jayson Lomtong Cena
4. Rafael Peres Da Silva

### Short Answer Questions

#### Question 1: Briefly describe the web technology stack used in your implementation.

Answer: Please replace this sentence with your answer.
##### Backend
- Docker with runit init daemon inside to manage services
- Nginx with modsecurity for web proxy which proxies port 80(static) and 8080(API)
- Python with Flask for web framework and SQLAlchemy for ORM
- Database is sqlite and modeled in python

##### Frontend
- HTML/CSS3
- Bootstrap
- Jquery
- Ajax
- Window sessionStorage is used for token storage


#### Question 2: Are there any security considerations your team thought about?

Answer: Please replace this sentence with your answer.
- Window sessionStorage is used to store the token once user is logged-in. Access to the token value is restricted to the same scheme + hostname + port.
- Token is cleared when the browser closes or user logs-out
- To restrict XSS attacks in client side
- `JSON.stringify()` is used for the JS object serialization(encode data)
- `JSON.parse()` is used for the deserialization
- Only external Javascripts are used as opposed to inline or scripts on the same page
- To restrict SQL injection attacks, all queries are executed using SQLAlchemy ORM, which by default quotes special characters – semicolons or apostrophes and more advanced restrictions.
- Serve API on the same port(tcp/80 in this case) as the static files to simplify CORS configs
- This was currently disabled to prevent automated grading script from failing
- Use JWT (JSON Web Tokens) to store user-critical states(i.e. session) on the client side
- Password hash + salt stored on the database complying with NIST guideline
- Username/Password complexity requirements (minimum-length: 5 characters)
- Add more strict password requirements (alphanumeric, special chars, minimum 8 chararcters) in the future

#### Question 3: Are there any improvements you would make to the API specification to improve the security of the web application?

Answer: Please replace this sentence with your answer.
- Use JWT for session handling
- Associate IP with token (probably too strict specially with eyeballs who are getting dynamic IPs from ISPs)
- Limit the size of fields i.e. diary content
- Limit the size of request payload
- Do not pass technical details on the response (e.g. stack traces)
- X-Content-Type-Options: nosniff
- Input validation on the server-side specially on diary content. This can be viewed publicly and can do XSS on viewers

#### Question 4: Are there any additional features you would like to highlight?

Answer: Please replace this sentence with your answer.
- Make it more REST-ful (and easier to debug on the webserver’s access/error logs)
- Response codes: `5xx` response code for errors, `403` for auth failures
- `PUT` for new diary entries, `POST`/`UPDATE` for updates, `DELETE` for deletes
- `/diary/<id>` for accessing diaries (update/delete/get)

#### Question 5: Is your web application vulnerable? If yes, how and why? If not, what measures did you take to secure it?

Answer: Please replace this sentence with your answer.
Answer: Yes web application is vulnerable.

- Dictionary/brute-force attacks can be done on auth endpoints
- Ratelimit was in-place on the API but it was temporarily disabled to prevent automated grading script from getting rate-limited
- client server communication is taken place over HTTP. So it is vulnerable to attacks associated with insecure HTTP.
- Connection can be hijacked since token is visible during the HTTP communication
- XSS attacks due to resource (images, js etc.) downloads over HTTP
- Window.sessionStorage is used over cookies, however it is still vulnerable to XSS
- Client side Ajax requests and responses are sanitized/encoded/escaped. However still vulnerable to other types of XSS.


#### Feedback: Is there any other feedback you would like to give?

Answer: Please replace this sentence with your answer.
- it's fun

### Declaration

#### Please declare your individual contributions to the assignment:

1. Member 1 Name
- Integrated feature x into component y
- Implemented z
2. Member 2 Name
- Wrote the front-end code
3. Member 3 Name
- Designed the database schema
4. Member 4 Name
- Implemented x

1. Caroline Astolfi
- Designed the database schema and created the database files
2. Jaliya Chathuranga Waidyathilake
- Ui design, front end scripts. Ajax request/response
- Integration and testing
3. Jayson Lomtong Cena
- Updated docker env to nginx and runit and other docker env fixes
- Authentication endpoint
- Test script for validating compliance with API specification
4. Rafael Peres Da Silva
- Initial User endpoint
- Diary endpoint
2 changes: 2 additions & 0 deletions conf/cs5331_db.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[DB]
dbname=cs5331
59 changes: 59 additions & 0 deletions database/WebSecu_DB_diary.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
CREATE DATABASE IF NOT EXISTS `WebSecu_DB` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `WebSecu_DB`;
-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
--
-- Host: localhost Database: WebSecu_DB
-- ------------------------------------------------------
-- Server version 5.7.21

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `diary`
--

DROP TABLE IF EXISTS `diary`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `diary` (
`userid` int(11) NOT NULL,
`title` text NOT NULL,
`public` tinyint(1) NOT NULL,
`text` text,
`publish_date` datetime NOT NULL,
`author` varchar(45) DEFAULT NULL,
`diary_id` int(11) NOT NULL AUTO_INCREMENT,
UNIQUE KEY `diary_id_UNIQUE` (`diary_id`),
KEY `userid_idx` (`userid`),
CONSTRAINT `userid` FOREIGN KEY (`userid`) REFERENCES `users` (`userid`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `diary`
--

LOCK TABLES `diary` WRITE;
/*!40000 ALTER TABLE `diary` DISABLE KEYS */;
/*!40000 ALTER TABLE `diary` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2018-02-24 9:55:25
55 changes: 55 additions & 0 deletions database/WebSecu_DB_token.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
CREATE DATABASE IF NOT EXISTS `WebSecu_DB` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `WebSecu_DB`;
-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
--
-- Host: localhost Database: WebSecu_DB
-- ------------------------------------------------------
-- Server version 5.7.21

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `token`
--

DROP TABLE IF EXISTS `token`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `token` (
`userid` int(11) NOT NULL,
`token` varchar(36) DEFAULT NULL,
`validity` tinyint(1) DEFAULT NULL,
UNIQUE KEY `userid_UNIQUE` (`userid`),
UNIQUE KEY `token_UNIQUE` (`token`),
CONSTRAINT `f_userid` FOREIGN KEY (`userid`) REFERENCES `users` (`userid`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `token`
--

LOCK TABLES `token` WRITE;
/*!40000 ALTER TABLE `token` DISABLE KEYS */;
/*!40000 ALTER TABLE `token` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2018-02-24 9:55:25
58 changes: 58 additions & 0 deletions database/WebSecu_DB_users.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
CREATE DATABASE IF NOT EXISTS `WebSecu_DB` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `WebSecu_DB`;
-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
--
-- Host: localhost Database: WebSecu_DB
-- ------------------------------------------------------
-- Server version 5.7.21

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`full_name` text NOT NULL,
`age` int(11) unsigned NOT NULL,
`hash_password` text NOT NULL,
`salt` text,
PRIMARY KEY (`userid`),
UNIQUE KEY `userid_UNIQUE` (`userid`),
UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2018-02-24 9:55:25
Binary file added img/CreateNew.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/Members.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/Registration_MinimumCharacterValidation.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/login.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/privateDiary.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/publicDiary_Home.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/register.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed img/samplescreenshot.png
Binary file not shown.
7 changes: 7 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pip
flask
flask-cors
configparser
Flask-SQLAlchemy
PyJWT
uuid
Loading