예제 #1
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": "メールアドレスが登録されたメールアドレスと一致しません"})
예제 #2
0
def register_new_user(request):
    """(管理者専用)新規ユーザを登録する"""
    error = ""

    # セッション情報に管理者IDが存在するか確認。存在しなければログイン画面へ遷移
    if not __is_admini_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "管理者権限がありません"})

    if request.method == "POST":
        user_id = int(request.POST.get("user_id", ""))
        username = request.POST.get("user_name", "")
        mail_address = request.POST.get("mail_address", "")

        if (UserDao.is_already_registered(user_id)):
            error = "該当ユーザIDは既に登録されております"
        else:
            UserDao.create_user(user_id, username, mail_address, INIT_PASS)

        # 全ユーザ情報を取得
        users = UserDao.get_users()

        return TemplateResponse(request, URL_REBADM001, {
            "users": users,
            "error": 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 test_delete_user(request):
    """
    ユーザIDに紐づくユーザーを削除する
    :param user_id: ユーザID
    :return:
    """
    user_id = int(request.POST.get("user_id", 0))
    if user_id:
        UserDao.delete_user_by_user_id(user_id)
        ResDao.delete_by_user_id(user_id)
        LotDao.delete_by_user_id(user_id)
        LodginDao.delete_by_user_id(user_id)

    return HttpResponseRedirect(reverse('test_database'))
예제 #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 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, {})
예제 #7
0
def lottery(request):
    """予約日入力画面を表示"""
    print("session情報を表示")
    for session_info in UserDao.test_session():
        print(session_info.get_decoded())

    return TemplateResponse(request, URL_REBGST002, {})
예제 #8
0
def register_reservation(request, user_id):
    """
    予約情報を登録する
    :param request: request
    :param mail_address: 宿泊登録者のメールアドレス
    :return: ユーザー一覧画面
    """

    if request.method == "POST":
        lottery_flag = request.POST.get("lottery_flag", None)
        check_in_date = datetime.date.fromisoformat(
            request.POST.get("check_in_date", ""))
        check_out_date = datetime.date.fromisoformat(
            request.POST.get("check_out_date", ""))
        number_of_rooms = request.POST.get("number_of_rooms", "")
        number_of_guests = request.POST.get("number_of_guests", "")
        purpose = request.POST.get("purpose", "")

        # 抽選フラグが"1"の場合、抽選エンティティを作成
        if lottery_flag:
            LotDao.create_res_by_in_and_out(user_id, check_in_date,
                                            check_out_date, number_of_rooms,
                                            number_of_guests, purpose)

        # 抽選フラグが指定されていない場合、予約エンティティを作成
        else:
            ResDao.create_res_by_in_and_out(user_id, check_in_date,
                                            check_out_date, number_of_rooms,
                                            number_of_guests, purpose)

    # 表示するユーザー情報を取得
    users = UserDao.get_users()

    return HttpResponseRedirect(reverse('test_reservation', args=(user_id, )))
예제 #9
0
def update_user(request):
    """(管理者専用)ユーザ情報を更新する"""

    # セッション情報に管理者IDが存在するか確認。存在しなければログイン画面へ遷移
    if not __is_admini_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "管理者権限がありません"})

    if request.method == "POST":
        user_id = request.POST.get("user_id", "")
        username = request.POST.get("user_name", "")
        mail_address = request.POST.get("mail_address", "")
        UserDao.update_user_without_password(user_id, username, mail_address)

        # 全ユーザ情報を取得
        users = UserDao.get_users()

    return TemplateResponse(request, URL_REBADM001, {"users": users})
예제 #10
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)
예제 #11
0
def delete_user(request):
    """(管理者専用)ユーザ情報を更新する"""

    # セッション情報に管理者IDが存在するか確認。存在しなければログイン画面へ遷移
    if not __is_admini_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "管理者権限がありません"})

    if request.method == "POST":
        user_id = request.POST.get("user_id", "")
        if user_id:
            UserDao.delete_user_by_user_id(user_id)
            ResDao.delete_by_user_id(user_id)
            LotDao.delete_by_user_id(user_id)
            LodginDao.delete_by_user_id(user_id)

        # 全ユーザ情報を取得
        users = UserDao.get_users()

    return TemplateResponse(request, URL_REBADM001, {"users": users})
예제 #12
0
def test_database(request):
    """
    テスト用のユーザー情報を表示・登録する画面
    :param request: request
    :return: ユーザー一覧画面
    """

    # POSTで情報が送られてきた場合、ユーザー情報を登録する
    if request.method == "POST":
        username = request.POST.get("username", "")
        mail_address = request.POST.get("mail_address", "")
        password = request.POST.get("password", "")
        UserDao.create_user(username, mail_address, password)

    # 一覧表示するユーザー情報を取得
    users = UserDao.get_users()

    json_data = JsonUtil.create_json_data(2019, 7)

    return TemplateResponse(request, TEST_SCREEN, {"users": users, "json_data": json_data})
예제 #13
0
def get_back_to_main_from_test_register(request, user_id):
    """
    ユーザー登録画面からログイン画面へ遷移する
    :param request: request
    :param user_id: 宿泊者のユーザID
    :return: ユーザー一覧画面
    """

    # 表示するユーザー情報を取得
    users = UserDao.get_users()

    return TemplateResponse(request, URL_REBGST001, {})
예제 #14
0
def init_admin_manage(request):
    """(管理者専用)管理者画面の初期表示"""

    # セッション情報に管理者IDが存在するか確認。存在しなければログイン画面へ遷移
    if not __is_admini_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "管理者権限がありません"})

    # 全ユーザ情報を取得
    users = UserDao.get_users()

    return TemplateResponse(request, URL_REBADM001, {"users": users})
예제 #15
0
def get_back_to_main_from_test_register(request, mail_address):
    """
    予約登録画面からユーザー登録画面へ遷移する
    :param request: request
    :param mail_address: 宿泊者のメールアドレス
    :return: ユーザー一覧画面
    """

    # 表示するユーザー情報を取得
    users = UserDao.get_users()

    json_data = JsonUtil.create_json_data(2019, 7)

    return TemplateResponse(request, TEST_SCREEN, {"users": users, "json_data": json_data})
예제 #16
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})
예제 #17
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
        })
예제 #18
0
def test_register_res(request, mail_address):
    """
    宿泊情報を登録する
    :param request: request
    :param mail_address: 宿泊登録者のメールアドレス
    :return: ユーザー一覧画面
    """

    if request.method == "POST":
        target_user = User.objects.get(mail_address=mail_address)
        check_in_date = request.POST.get("check_in_date", "")
        stay_term = request.POST.get("stay_term", "")
        number_of_rooms = request.POST.get("number_of_rooms", "")
        number_of_guests = request.POST.get("number_of_guests", "")
        purpose = request.POST.get("purpose", "")
        ResDao.create_res(target_user, check_in_date, stay_term, number_of_rooms, number_of_guests, purpose)

    # 表示するユーザー情報を取得
    users = UserDao.get_users()

    return TemplateResponse(request, TEST_SCREEN, {"users": users})
예제 #19
0
def logout_user(request):
    Session.objects.all().delete()
    for session_info in UserDao.test_session():
        print(session_info.get_decoded())
    return TemplateResponse(request, URL_REBGST001, {})
예제 #20
0
def logout(request):
    request.session.flush()
    print("session情報を表示")
    for session_info in UserDao.test_session():
        print(session_info.get_decoded())
    return TemplateResponse(request, URL_REBGST001, {})