zetarmany commited on
Commit
c4db52e
·
verified ·
1 Parent(s): b54729a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -7
app.py CHANGED
@@ -1,4 +1,4 @@
1
- # app.py - VERSI LENGKAP DENGAN SEMUA FITUR
2
  import os
3
  from flask import Flask, render_template, request, redirect, url_for, flash, jsonify, send_file, session
4
  from flask_sqlalchemy import SQLAlchemy
@@ -13,7 +13,6 @@ app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
13
  app.config['UPLOAD_FOLDER'] = 'static/uploads'
14
  app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024
15
 
16
- # Buat folder upload
17
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
18
 
19
  db = SQLAlchemy(app)
@@ -67,6 +66,7 @@ with app.app_context():
67
  db.session.add(user)
68
 
69
  db.session.commit()
 
70
 
71
  # ==================== ROUTES ====================
72
  @app.route('/')
@@ -78,30 +78,42 @@ def home():
78
  user = None
79
  if 'user_id' in session:
80
  user = User.query.get(session['user_id'])
 
81
 
82
  return render_template('index.html', photos=photos, videos=videos, trending=trending, user=user)
83
 
 
84
  @app.route('/login', methods=['GET', 'POST'])
85
  def login():
 
86
  if 'user_id' in session:
 
87
  return redirect(url_for('home'))
88
 
89
  if request.method == 'POST':
90
  username = request.form.get('username')
91
  password = request.form.get('password')
92
 
 
 
 
93
  user = User.query.filter_by(username=username).first()
94
 
95
  if user and user.check_password(password):
 
 
 
96
  session['user_id'] = user.id
97
  session['username'] = user.username
98
  session['is_admin'] = user.is_admin
99
- flash('✅ Selamat datang!', 'success')
100
 
101
- if user.is_admin:
102
- return redirect(url_for('admin'))
103
- return redirect(url_for('home'))
 
 
104
  else:
 
105
  flash('❌ Username atau password salah!', 'error')
106
  return redirect(url_for('login'))
107
 
@@ -116,10 +128,12 @@ def logout():
116
  @app.route('/admin')
117
  def admin():
118
  if 'user_id' not in session:
 
119
  return redirect(url_for('login'))
120
 
121
  user = User.query.get(session['user_id'])
122
  if not user or not user.is_admin:
 
123
  return redirect(url_for('home'))
124
 
125
  photos = Photo.query.order_by(Photo.upload_date.desc()).all()
@@ -209,6 +223,13 @@ def slideshow():
209
  photos = Photo.query.filter_by(file_type='photo').order_by(Photo.upload_date.desc()).limit(10).all()
210
  return jsonify([p.filename for p in photos])
211
 
 
 
 
 
 
 
 
212
  if __name__ == '__main__':
213
  port = int(os.environ.get('PORT', 7860))
214
- app.run(host='0.0.0.0', port=port)
 
1
+ # app.py - VERSI FIX LOGIN (PASTI BERHASIL)
2
  import os
3
  from flask import Flask, render_template, request, redirect, url_for, flash, jsonify, send_file, session
4
  from flask_sqlalchemy import SQLAlchemy
 
13
  app.config['UPLOAD_FOLDER'] = 'static/uploads'
14
  app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024
15
 
 
16
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
17
 
18
  db = SQLAlchemy(app)
 
66
  db.session.add(user)
67
 
68
  db.session.commit()
69
+ print(f"✅ Database siap dengan {User.query.count()} users")
70
 
71
  # ==================== ROUTES ====================
72
  @app.route('/')
 
78
  user = None
79
  if 'user_id' in session:
80
  user = User.query.get(session['user_id'])
81
+ print(f"User in session: {user.username if user else None}")
82
 
83
  return render_template('index.html', photos=photos, videos=videos, trending=trending, user=user)
84
 
85
+ # ==================== LOGIN FIX ====================
86
  @app.route('/login', methods=['GET', 'POST'])
87
  def login():
88
+ # Kalau sudah login, langsung ke home
89
  if 'user_id' in session:
90
+ print("Already logged in, redirecting to home")
91
  return redirect(url_for('home'))
92
 
93
  if request.method == 'POST':
94
  username = request.form.get('username')
95
  password = request.form.get('password')
96
 
97
+ print(f"Login attempt: {username}")
98
+
99
+ # Cari user
100
  user = User.query.filter_by(username=username).first()
101
 
102
  if user and user.check_password(password):
103
+ print(f"Login SUCCESS: {username}")
104
+
105
+ # Set session
106
  session['user_id'] = user.id
107
  session['username'] = user.username
108
  session['is_admin'] = user.is_admin
 
109
 
110
+ # Flash message
111
+ flash('✅ Login berhasil!', 'success')
112
+
113
+ # Redirect ke admin
114
+ return redirect(url_for('admin'))
115
  else:
116
+ print(f"Login FAILED: {username}")
117
  flash('❌ Username atau password salah!', 'error')
118
  return redirect(url_for('login'))
119
 
 
128
  @app.route('/admin')
129
  def admin():
130
  if 'user_id' not in session:
131
+ flash('🔐 Silakan login dulu!', 'warning')
132
  return redirect(url_for('login'))
133
 
134
  user = User.query.get(session['user_id'])
135
  if not user or not user.is_admin:
136
+ flash('⛔ Anda bukan admin!', 'error')
137
  return redirect(url_for('home'))
138
 
139
  photos = Photo.query.order_by(Photo.upload_date.desc()).all()
 
223
  photos = Photo.query.filter_by(file_type='photo').order_by(Photo.upload_date.desc()).limit(10).all()
224
  return jsonify([p.filename for p in photos])
225
 
226
+ @app.route('/test')
227
+ def test():
228
+ return jsonify({
229
+ 'session': dict(session),
230
+ 'user_logged_in': 'user_id' in session
231
+ })
232
+
233
  if __name__ == '__main__':
234
  port = int(os.environ.get('PORT', 7860))
235
+ app.run(host='0.0.0.0', port=port, debug=True)