webdev,

Modify Sign-Up Router & Administrator Permission Configuration

Dahna Dahna Follow Mar 12, 2024 · 1 min read
Modify Sign-Up Router & Administrator Permission Configuration
Share this

Modify Sign-Up Router & Administrator Permission Configuration

회원가입시 이메일 추가

  1. 데이터베이스 스키마 수정
    ALTER TABLE users ADD COLUMN email VARCHAR(255) UNIQUE NOT NULL;

  2. 백엔드 로직 업데이트
    1

get_main_post : @app.route(‘/’)로 정의된 뷰 함수의 이름을 가리킴

  • 로그인 할 때 메일은 쓰지 않을 것이기 때문에 User클래스와 load_user에서는 email을 조회하지 않음
  1. 템플릿 수정(signup.html)
<!-- 이메일 입력 필드 추가 -->
<div class="form-group">
    <label for="email">Email:</label>
    <input type="email" class="form-control" id="email" name="email" placeholder="Enter your email" required>
</div>


사용자 권한

  1. 사용자 권한 구분을 위한 데이터베이스 수정
    ALTER TABLE users ADD COLUMN is_admin BOOLEAN DEFAULT FALSE;
    
  2. 사용자 모델 변경
    • User 클래스에 is_admin 속성을 추가해, 로그인한 사용자가 관리자인지 아닌지를 확인 2
  3. 권한 검사를 위한 데코레이터 생성
from functools import wraps
from flask import abort

def admin_required(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        if not current_user.is_authenticated or not current_user.is_admin:
            abort(403)  # Forbidden access
        return f(*args, **kwargs)
    return decorated_function

🌟코드 설명 필요

  1. 관리자 권한으로 제한된 각 라우트에 데코레이터 적용
    3

  2. 로그인 로더 수정
    4

  3. 데이터베이스 직접 수정해서 관리자 권한 부여

    # MySQL
    UPDATE users SET is_admin = TRUE WHERE username = '특정사용자이름';
    

🌟시간 효율을 위해서 나중에 수정하지말고 처음부터 설계를 잘 하고 진행할 것….

Dahna
Written by Dahna Follow
Hi, I am Dahna, the author of this blog!