サインアップ・アウト画面処理を作る

サインイン・アウトに必要なもの

必要なもの一覧

ここではユーザーIDをusersデータベースに登録を行っています。またセッションにIDを登録することでサインインの確認をしています。

サインアップ画面

signup.html

<!DOCTYPE html>
<html lang="jp">
<head>
    <meta charset="UTF-8">
    <title>サインアップページ</title>
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta name="description" content="pythonとdeta.spaceのサンプルページです" >
    <meta name="keywords" content="プログラム,教育,python,deta.space,bootstrap,flask" >
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css"
    href="{{ url_for('static', filename='css/style.css')}}">
</head>
<body class="text-center">
    <div class="container">
        <p class="mt-3 mb-3">あなたのアカウントは{{id}}です。Loginから入り直してください</p>
        <ul class="list-group">
            <li class="list-group-item">自分でイベントを作成したら、そのイベントに1MByte以下の小さな写真を1枚づつ登録できます。</li>
            <li class="list-group-item">イベント数は最大10</li>
            <li class="list-group-item">1イベントに最大10枚</li>
            <li class="list-group-item">他人が作ったイベントには参加希望を出せます。許可されれば自分も写真を登録できます</li>
            <li class="list-group-item">処理が長いとTimeoutします。←で戻って続けてください</li>
            <li class="list-group-item">写真が大きいと413エラーになることもあります。←で戻って続けてください</li>
            <li class="list-group-item">自分が登録した写真は削除できます</li>
            <li class="list-group-item">イベントは最長10日で消えます。写真も削除されます</li>
        </ul>
        <a href="/">Login</a>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
</body>
</html>

main サインアップ部分

main.py(抜粋)

login()で行っています。
ログイン編を見てください

main ログアウト部分

main.py(抜粋)

@app.route("/logout", methods=["GET"])
def logout():
    #期限切れ写真の削除
    events = event.Event()
    photos = photoBase.PhotoBase()
    drive = driveFile.DriveFile()
    t = datetime.date.today()
    edata = events.dirLostEvents(t.strftime("%Y-%m-%d"))
    for e in edata.items:
      pdata = events.dirEventPhotos(e["key"],True)
      if pdata != None:
        for p in pdata:
        drive.deleteFile(p["filename"])
        photos.deletePhoto(p["key"])
      events.deleteEvent(e["key"])

    session.pop('id',None)
    session.clear()
    return redirect("/")

ログアウトの処理はセッションを削除するだけです。

実は、ここで期限切れのイベントの処理も同時に行っています。写真を削除してイベントも削除しています。