· 4 years ago · Nov 05, 2020, 01:56 PM
1from flask import Flask, session, render_template, request, redirect
2from flask_pymongo import PyMongo
3from flask_restful import Api, Resource, reqparse # we will use this one after done with interface on html lmao
4from passlib.hash import sha256_crypt
5
6app = Flask(__name__)
7app.config["MONGO_URI"] = "mongodb://localhost:27017/tritek" # kat sini kita fok you ass broo go dieee
8
9with open('SECRET_SECRET',mode='rb') as f:
10 SECRET_KEY = f.read()
11
12app.secret_key = SECRET_KEY
13api = Api(app)
14mongo = PyMongo(app)
15
16@app.route('/register', methods=['POST', 'GET']) # get untuk tunjuk form je
17def register(): # dalam requests.form ada 'username' ngan 'password'
18 if request.method == 'POST':
19 username = request.form['username']
20 password = request.form['password']
21
22 if ' ' in username: # check if username has spaces in username
23 return 'Username cant contain spaces!<br>\
24 <a href="javascript:history.back()">Go back</a>'
25
26 #check dulu if username dah wujud
27 if mongo.db.pengguna.find_one({'username': username}): # username already exist
28 return 'Username already exist!\n\
29 <a href="javascript:history.back()">Go back</a>'
30
31 data = {'username': username.lower()}
32
33 if any(x.isupper() for x in username):
34 data['act_username'] = username
35
36 # hashing password
37 password = sha256_crypt.hash(password)
38 data['password'] = password
39 data['role'] = "member"
40
41 mongo.db.pengguna.insert_one(data) # collection pengguna
42
43 return 'Pendaftaran berjaya!\n\
44 <a href="/login">Log In</a>'
45 elif request.method == "GET":
46 return render_template('register_form.html')
47
48@app.route('/')
49def home():
50 # return "Hello world!"
51 return render_template('index.html')
52
53@app.route('/login', methods=['GET', 'POST'])
54def login():
55 if request.method == "POST":
56 username = request.form['username'].lower()
57 data = mongo.db.pengguna.find_one({'username': username})
58 if data and sha256_crypt.verify(request.form['password'], data['password']):
59
60 session_username = {}
61
62 if 'act_username' in data: # password is valid so we validate the login
63 session_username['username'] = data['act_username']
64 else:
65 session_username['username'] = data['username']
66 session_username['role'] = data['role']
67 session['userdata'] = session_username
68 return redirect('/')
69 else:
70 return """
71 Either you password is wrong, or you are a POS
72 <a href="/login">Try Again</a>"""
73 elif request.method == "GET":
74 return render_template('login.html')
75
76@app.route('/logout')
77def logout():
78 if 'userdata' in session:
79 del session['userdata']
80 return redirect('/')
81
82@app.route('/reg_admin')
83def reg_admin():
84 return 'work in progress!<br><a href="javascript:history.back()">Go Back</a>'
85
86
87if __name__ == "__main__":
88 app.run(debug=True)
89 #app.run(host="0.0.0.0", port=8080)
90