Rapportsystem API - of D03N
Hovedprosjekt FiV Programmering 20-24
Loading...
Searching...
No Matches
adminCreateSubOperator.py
Go to the documentation of this file.
1from flask_restx import Resource
2from flask import request, jsonify
3
4#imports os
5import os
6current_directory = os.getcwd()
7#imports sys
8import sys
9sys.path.append(os.path.join(current_directory))
10from PW_hashHandler import pw_manager as hash
11from Models import user_model as UM
12from USER_obj import new_sub_user as makeUSR
13from Common.Requirements.admin_req import require_admin_account
14from flask_jwt_extended import jwt_required, get_jwt_identity
15from Common.Requirements import valid_token as vt
16
17#Create subuser route
19 #Post request for creating a new operator user and grants acces to a rapport
20 @ns.route('/createSubOperator')
21 class CreateOperatorUser(Resource):
22 new_sub_user_model = UM.sub_operator_model(ns)
23 @ns.doc('admin_create_sub_operator_user',
24 description='Create new operator user when given Email, Password and rapport name',
25 responses={
26 200: 'OK',
27 400: 'Invalid Argument or faulty data',
28 500: 'Internal server error'
29 })
30
31 #expects user model from post request
32 @ns.expect(new_sub_user_model, validate=True)
33
34 #Requires valid JWT token authentication
35 @jwt_required()
36 @vt.require_valid_token
37 @require_admin_account
38
39 def post(self):
40
41 #Gets admins email from JWT token
42 creatorID = get_jwt_identity()
43 creatorAccount = creatorID['email']
44
45 #Gets data from post request
46 data = request.get_json()
47
48 #Sets email and accountType from post request to loweer case
49 email = str(data['email']).lower()
50 passwordToHash = data['password']
51 passwordToPass = data['password']
52 rapportName = data['rapportName']
53
54 #uses the new objekt to create new user in database
55 makeUSR.createSubUser(email, hash.hash(passwordToHash), "operator", creatorAccount,passwordToPass,rapportName).saveToDB()
56 #makeUSR.createSubUser(email, hash.hash(data['password']), accountType).saveToDB()
57
58 #returns error if no data is found or faulty
59 if not data:
60 return {"Error": "No data"}, 400
61 return data