Rapportsystem API - of D03N
Hovedprosjekt FiV Programmering 20-24
Loading...
Searching...
No Matches
adminCreateSubLeader.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 leader user & belonging database
20 @ns.route('/createSubLeader')
21 class CreateLeaderUser(Resource):
22 new_sub_user_model = UM.sub_leader_model(ns)
23 @ns.doc('admin_create_sub_leader_user',
24 description='Create new leader user when given Email, Password and Account type.',
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
35 #Requires valid JWT token authentication
36 @jwt_required()
37 @vt.require_valid_token
38 @require_admin_account
39
40 def post(self):
41
42 #Gets admins email from JWT token
43 creatorID = get_jwt_identity()
44 creatorAccount = creatorID['email']
45
46 #Gets data from post request
47 data = request.get_json()
48
49 #Sets email and accountType from post request to loweer case
50 email = str(data['email']).lower()
51 passwordToHash = data['password']
52 passwordToPass = data['password']
53
54 #uses the new objekt to create new user in database
55 makeUSR.createSubUser(email, hash.hash(passwordToHash), "leader", creatorAccount,passwordToPass).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