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": "メールアドレスが登録されたメールアドレスと一致しません"})
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 })
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": "パスワード変更に表示しました" })
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'))
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, {})
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, {})
def lottery(request): """予約日入力画面を表示""" print("session情報を表示") for session_info in UserDao.test_session(): print(session_info.get_decoded()) return TemplateResponse(request, URL_REBGST002, {})
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, )))
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})
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)
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})
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})
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, {})
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})
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})
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})
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 })
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})
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, {})
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, {})