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 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 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 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 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 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 })