見出し画像

[Python]ターミナルでログイン機能のみを作ってみる

1.ログイン機能

ターミナル上でユーザーidとパスワードを新規登録する機能と、ログインする機能のみを作りたいと思います。

2.コード

from hashlib import sha256
from getpass import getpass

class UserCertification:
    def __init__(self):
        self.user_list = []
        self.user_info = {"user_id": "", "pass": ""}
    #メッセージダイジェスト生成 
    def create_message_digest(self, user_id, password):
        cat_info = user_id + password
        cat_info_to_byte = cat_info.encode()
        hash_obj = sha256()
        hash_obj.update(cat_info_to_byte)
        msg_digest = hash_obj.hexdigest()
        return msg_digest
    #ユーザー存在確認 
    def check_exists_user(self, input_user_id):
        for user in self.user_list:
            user_id = user["user_id"]
            password = user["pass"]
            if user_id == input_user_id:
                return True
            else:
                return False
    #ユーザー新規作成       
    def create_user(self, user_id, password):
        password = self.create_message_digest(user_id, password)
        if self.check_exists_user(user_id):
            print("既にユーザーidが登録されています")
        else:
            self.user_info["user_id"] = user_id
            self.user_info["pass"] = password
            self.user_list.append(self.user_info)
    
    #ログインチェック 
    def login(self, input_user_id, input_password):
        check_password = self.create_message_digest(input_user_id, input_password)
        check_user_id = input_user_id
        for user in self.user_list:
            user_id = user["user_id"]
            password = user["pass"]
            if check_user_id == user_id and check_password == password:
                print("Success!")
                return True
            else:
                print("Fail")
                return False
        

def input_info():
    user_id = input("ユーザーidを入力してください:")
    password = getpass("パスワードを入力してください:")
    return user_id, password

if __name__ == "__main__":
    uc = UserCertification()
    while True:
        select_mode = int(input("0:新規登録/1:ログイン/2:終了"))
        if select_mode == 0:
            user_id, password = input_info()
            uc.create_user(user_id, password)
        elif select_mode == 1:
            user_id, password = input_info()
            uc.login(user_id, password)
        elif select_mode == 2:
            break
  

3.実行結果

0:新規登録/1:ログイン/2:終了0
ユーザーidを入力してください:nobi   
パスワードを入力してください:
0:新規登録/1:ログイン/2:終了1
ユーザーidを入力してください:nobi
パスワードを入力してください:
Success!
0:新規登録/1:ログイン/2:終了1
ユーザーidを入力してください:nobi
パスワードを入力してください:
Fail
0:新規登録/1:ログイン/2:終了0
ユーザーidを入力してください:nobi
パスワードを入力してください:
既にユーザーidが登録されています
0:新規登録/1:ログイン/2:終了0
ユーザーidを入力してください:shizu
パスワードを入力してください:
0:新規登録/1:ログイン/2:終了1
ユーザーidを入力してください:shizu
パスワードを入力してください:
Fail
0:新規登録/1:ログイン/2:終了1
ユーザーidを入力してください:shizu
パスワードを入力してください:
Success!

この記事が気に入ったらサポートをしてみませんか?