diff --git a/app/api/routes.py b/app/api/routes.py index 402e97706ac1a12a470a518cedfc1a95fd9b56ad..37e476e43be46cf1ef2fb2c0b753ec03dd7519da 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 e4e8adce12d471e2e1937207ec072361a6fadf43..e319fdf20f7d5dc5f86cb5729c2b8430cb980e74 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 f6db6864e8ec38dd02873080cbd04dd6e6a2488e..f6b781478c5c05b0dc26a2745c0383959b44f359 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