예제 #1
0
def main(request):
    """ログイン画面を表示"""

    # 画面からログイン認証情報(メールアドレス、パスワード)が送られてきた場合
    if request.method == 'POST':

        mail_address = request.POST.get("mail_address", "")
        password = request.POST.get("password","")
        user = UserDao.get_user(mail_address)

        """エラーへの対処法 → no such table: django_session
        以下のコマンドを実施して、セッションテーブルを作成する
        python manage.py migrate --run-syncdb
        """
        if user is not None:
            if user.check_pass(password):

                request.session[LOG_USR] = user.user_id
                request.session[LOG_NAME] = user.username
                request.session[LOG_MAIL] = user.mail_address
                return TemplateResponse(request, URL_REBGST002)
            else:
                return TemplateResponse(request, URL_REBGST001,
                                        {"error": "Your password was not available!!",
                                         "mail_address": mail_address,})
        else:
            return TemplateResponse(request, URL_REBGST001,
                                    {"error": "Your username was not available!!",
                                     "mail_address": mail_address})
    # ログイン画面以外からアクセスした場合
    else:
        return TemplateResponse(request, URL_REBGST001, {})
예제 #2
0
def reset_password(request):
    """パスワードリセット"""

    # ユーザID、メールアドレスを取得
    user_id = request.POST.get("user_id", "")
    mail_address = request.POST.get("mail_address", "")

    # ユーザ情報をDBから取得
    target_user = UserDao.get_user(user_id)

    # ユーザ情報が存在しない場合
    if target_user is None:
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "該当のユーザが存在しません"})

    # ユーザ情報のメールアドレスと画面から取得したメールアドレスが一致するかチェック
    if UserDao.check_user_by_mail_address(target_user, mail_address):

        #DBのユーザパスワードを初期値に更新
        UserDao.update_user_password(target_user, INIT_PASS)

        #TODO 登録のメールアドレスにパスワード初期化の旨を送信
        print("仮:メールアドレスにパスワード初期値を送信")

        return TemplateResponse(request, URL_REBGST001, {"error": ""})

    return TemplateResponse(request, URL_REBGST001,
                            {"error": "メールアドレスが登録されたメールアドレスと一致しません"})
예제 #3
0
def change_password(request):
    """パスワードを変更する"""

    # セッション情報にログインユーザが存在するか確認。存在しなければログイン画面へ遷移
    if not __is_login_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "セッションが切断されました"})

    # 現パスワード、新パスワード、新パスワード確認版を取得する
    old_password = request.POST.get("old_password", "")
    new_password = request.POST.get("new_password", "")
    new_password_conf = request.POST.get("new_password_conf", "")

    # ログインユーザ情報を取得する
    user = UserDao.get_user(request.session[LOG_USR])

    # 現パスワードがユーザーの登録パスワードと一致するか確認する
    if not UserDao.check_password_between_user_and_input(user, old_password):
        return TemplateResponse(request, URL_REBGST005,
                                {"error": "現在のパスワードが正しくありません。"})

    # 新パスワードと新パスワード確認用が一致するか確認する
    if new_password != new_password_conf:
        return TemplateResponse(request, URL_REBGST005,
                                {"error": "新しいパスワードと確認用パスワードが一致しません。"})

    # 新パスワードを更新する
    UserDao.update_user(user.user_id, user.username, user.mail_address,
                        new_password)
    return TemplateResponse(request, URL_REBGST005, {
        "error": "",
        "success": "パスワード変更に表示しました"
    })
예제 #4
0
def request_password(request):
    """画面側で入力したメールアドレスにパスワードを送信"""

    mail_address = request.POST.get("mail_address", "")

    if not mail_address == KARA:
        user = UserDao.get_user(mail_address)
        if user is not None:
            send_password(mail_address, user.password)
예제 #5
0
def push_login_button(request):
    """初期処理、ログイン画面からログイン処理を実施。
    ・ID、パスワードが登録情報と一致しない場合、エラーメッセージをログイン画面に表示
    ・ID、パスワードが登録情報と一致する場合、予約画面へ遷移
    """

    # 画面からログイン認証情報(メールアドレス、パスワード)が送られてきた場合
    if request.method == 'POST':

        user_id = request.POST.get("user_id", "")
        password = request.POST.get("password", "")
        user = UserDao.get_user(user_id)
        """エラーへの対処法 → no such table: django_session
        以下のコマンドを実施して、セッションテーブルを作成する
        python manage.py migrate --run-syncdb
        """
        # ユーザが存在する場合、セッション情報にユーザ情報を登録して、予約画面へ遷移
        if user is not None:
            if UserDao.check_password_between_user_and_input(user, password):

                #TODO 追って修正:ハードコーディング⇒DB取得
                #if user_id == 0:
                if True:
                    request.session[ADMIN_USR] = user.user_id
                    request.session[LOG_USR] = user.user_id
                    request.session[LOG_NAME] = user.username
                    request.session[LOG_MAIL] = user.mail_address
                else:
                    request.session[LOG_USR] = user.user_id
                    request.session[LOG_NAME] = user.username
                    request.session[LOG_MAIL] = user.mail_address

                return TemplateResponse(request, URL_REBGST002)
            # ユーザID、パスワードが登録情報と一致しない場合、ログイン画面を表示
            else:
                return TemplateResponse(
                    request, URL_REBGST001, {
                        "error": "Your password was not available!!",
                        "user_id": user_id,
                    })
        # ユーザが存在しない場合、ログイン画面を表示
        else:
            return TemplateResponse(request, URL_REBGST001, {
                "error": "Your username was not available!!",
                "user_id": user_id
            })
    # 初期処理の場合、ログイン画面を表示
    else:
        return TemplateResponse(request, URL_REBGST001, {})
예제 #6
0
def test_reservation(request, mail_address):
    """
    テスト用のデータベースを作成する
    :param request: request
    :param mail_address: 宿泊対象者のメールアドレス
    :return: 対象ユーザーの宿泊予約一覧画面
    """

    # 対象のユーザーネームを取得
    user = UserDao.get_user(mail_address)

    # 対象のユーザーアドレスに紐づく宿泊日付を取得
    reservations = ResDao.get_res_list(user)

    return TemplateResponse(request, TEST_RES_SCREEN, {"reservations": reservations, "username": user.username})
예제 #7
0
def test_reservation(request, user_id):
    """
    テスト用の予約作成画面へ遷移する
    :param request: request
    :param mail_address: 宿泊対象者のメールアドレス
    :return: 対象ユーザーの宿泊予約一覧画面
    """

    # 対象のユーザーネームを取得
    user = UserDao.get_user(user_id)

    # 対象のユーザーアドレスに紐づく宿泊日付を取得
    reservations = ResDao.get_res_list(user_id)
    lotterys = LotDao.get_res_list(user_id)

    return TemplateResponse(
        request, TEST_RES_SCREEN, {
            "reservations": reservations,
            "lotterys": lotterys,
            "username": user.username
        })