From b1985c081812a71a53c62a98776640f751392ba5 Mon Sep 17 00:00:00 2001 From: "Ethan Clay (Student)" <ethan2.clay@live.uwe.ac.uk@csctcloud.prxhn32zsyjupl12zde3wlfkch.cwx.internal.cloudapp.net> Date: Fri, 1 Nov 2024 11:43:09 +0000 Subject: [PATCH] Add create user endpoint --- app/api/routes.py | 19 +++++++++++++++++++ app/models/user.py | 12 ++++++++---- .../ac9d4555724d_add_api_token_and_expiry.py | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/api/routes.py b/app/api/routes.py index 402e977..37e476e 100644 --- a/app/api/routes.py +++ b/app/api/routes.py @@ -22,3 +22,22 @@ def get_user_by_id(id): except Exception as e: return jsonify({'error': str(e)}), 500 +@bp.route('/user/create', methods=['GET']) +def create_user(): + try: + result = User.create_user('ethan_root', 'ethan2.clay@live.uwe.ac.uk', 'password1234', 1) + + if result is None: + return jsonify({'error': 'User not found'}), 404 + + user_data = { + 'id': result.user_id, + 'username': result.username, + 'email': result.email + } + return jsonify(user_data), 200 + + #If something falls over throw nice error for debugging, will change for admin only users to see errors otherwise throw generic 500 + except Exception as e: + return jsonify({'error': str(e)}), 500 + diff --git a/app/models/user.py b/app/models/user.py index e4e8adc..e319fdf 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -6,12 +6,16 @@ class User(db.Model): __tablename__ = 'users' user_id = db.Column(db.Integer, primary_key=True) - username = db.Column(db.String(150), nullable=False, unique=True) - email = db.Column(db.String(150), nullable=False, unique=True) + username = db.Column(db.String(255), nullable=False, unique=True) + email = db.Column(db.String(255), nullable=False, unique=True) + password = db.Column(db.String(255), nullable=False) + role_id = db.Column(db.SmallInteger(), nullable=False) + api_token = db.Column(db.String(255), nullable=True, unique=True) + token_expiry = db.Column(db.DateTime(), nullable=True) @classmethod - def create_user(cls, username, email): - new_user = cls(username=username, email=email) + def create_user(cls, username, email, password, role_id): + new_user = cls(username=username, email=email, password=password, role_id=role_id) db.session.add(new_user) db.session.commit() return new_user diff --git a/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py b/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py index f6db686..f6b7814 100644 --- a/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py +++ b/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py @@ -24,6 +24,6 @@ def upgrade(): sa.Column('email', sa.String(255), nullable=False, unique=True), sa.Column('password', sa.String(255), nullable=False), sa.Column('role_id', sa.SmallInteger(), nullable=False, server_default='1'), #Standard user permission level - sa.Column('api_token', sa.String(255), nullable=True), + sa.Column('api_token', sa.String(255), nullable=True, unique=True), sa.Column('token_expiry', sa.DateTime(), nullable=True) ) \ No newline at end of file -- GitLab