in src/tobedeleted.py [0:0]
def lambda_handler(event, context):
try:
Username = ''
UserAttributes = []
awsUsername = ''
UserAttributes.append({'Name': 'custom:user_group', "Value": event['group']})
if 'email' in event and event['email'] != '':
if checkEmailPhoneExistsSameGroup(event['group'], {"email": event['email']}) == 0:
UserAttributes.append({'Name': 'email', "Value": event['email']})
UserAttributes.append({'Name': 'email_verified', "Value": "TRUE"})
else:
return {
'status': 'error',
'message': "Email already exists!",
'data': json.dumps("", default=MyHelper.myConverter)
}
mobile = None
if 'mobile' in event and event['mobile'] != '':
if checkEmailPhoneExistsSameGroup(event['group'], {"mobile": event['mobile']}) == 0:
UserAttributes.append({'Name': 'phone_number', "Value": event['mobile']})
UserAttributes.append({'Name': 'phone_number_verified', "Value": "TRUE"})
mobile = event['mobile']
else:
return {
'status': 'error',
'message': "Mobile already exists!",
'data': json.dumps("", default=MyHelper.myConverter)
}
if 'username' in event and event['username'] != '':
Username = event['username']
# return Username
try:
if Username != '' and 'mobile' in event and event['mobile'] != '':
tempPass = MyHelper.generatePassword()
createUser = client.admin_create_user(
UserPoolId=UserPoolId,
Username=Username,
UserAttributes=UserAttributes,
# TemporaryPassword=tempPass
MessageAction='SUPPRESS'
)
Attributes = {}
for Attribute in createUser['User']['Attributes']:
Attributes.update({Attribute['Name']: Attribute['Value']})
if 'sub' in Attributes:
awsUsername = Attributes['sub']
try:
addToGroup = client.admin_add_user_to_group(
UserPoolId=UserPoolId,
Username=Username,
GroupName=event['group']
)
# make the password permanent
client.admin_set_user_password(
UserPoolId=UserPoolId,
Username=Username,
Password=tempPass,
Permanent=True
)
# temp pass sms
if mobile != None:
text_massage = "DrKure: Thank you for joining us. It is recommended to change your temporary password immediately. Your username is " + Username + " and temporary password is " + tempPass
sms = boto3.client(
"sns",
aws_access_key_id=os.environ['awsAccessKey'],
aws_secret_access_key=os.environ['awsSecretKey'],
region_name="ap-south-1"
)
sms.publish(
PhoneNumber=mobile,
Message=text_massage,
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': 'DRKUREMSG'
},
'AWS.SNS.SMS.SMSType': {
'DataType': 'String',
'StringValue': 'Transactional'
}
}
)
inputdata = event.copy()
del inputdata['group']
del inputdata['time_zone']
del inputdata['username']
if 'password' in inputdata:
del inputdata['password']
if 'language' in inputdata:
del inputdata['language']
if 'specialization' in inputdata:
del inputdata['specialization']
if 'degree' in inputdata:
del inputdata['degree']
if 'time' in inputdata:
del inputdata['time']
inputdata.update({'aws_cognito_username': awsUsername})
inputdata.update({'created': MyHelper.timeToStore('', event['time_zone'])})
inputdata.update({'modified': MyHelper.timeToStore('', event['time_zone'])})
inputdata.update({'dr_id': MyHelper.drUniqueId(event['group'])})
if 'lab_name' in event.keys():
inputdata.update({'lab_name': event['lab_name']})
if 'diagnostic_admin' in event.keys():
inputdata.update({'diagnostic_admin': event['diagnostic_admin']})
if 'hospital_name' in event.keys():
inputdata.update({'hospital_name': event['hospital_name']})
if 'hospital_doctor_admin' in event.keys():
inputdata.update({'hospital_doctor_admin': event['hospital_doctor_admin']})
if event['group'] == 'Patient':
inputdata.update({'emergency_contact': event['mobile']})
admins = ["Operationaladmin", "Systemadmin", "Superadmin", "Hospitaladmin", "Labadmin",
"Diagnosticadmin"]
if event['group'] in admins:
inputdata.update({'user_group': event['group']})
try:
with conn.cursor(pymysql.cursors.DictCursor) as cur:
cur.execute(MyHelper.queryInsert(MyHelper.getTableFromGroup(event['group']), inputdata))
conn.commit()
if "language" in event and event['language'] != '':
language = event['language'].split(',')
for l in language:
cur.execute(MyHelper.queryInsert("user_languages",
{"aws_cognito_username": awsUsername,
"language_id": l}))
conn.commit()
if "specialization" in event and event['specialization'] != '' and event[
'group'] == 'Doctor':
specialization = event['specialization'].split(',')
for s in specialization:
cur.execute(MyHelper.queryInsert("doctor_specializations",
{"aws_cognito_username": awsUsername,
"specialization_id": s}))
conn.commit()
if "degree" in event and event['degree'] != '' and event['group'] == 'Doctor':
degree = event['degree'].split(',')
for d in degree:
cur.execute(MyHelper.queryInsert("doctor_degrees",
{"aws_cognito_username": awsUsername,
"degree_id": d}))
conn.commit()
if "time" in event and event['time'] != '' and event['group'] == 'Doctor':
time = event['time'].split(',')
for t in time:
cur.execute(MyHelper.queryInsert("doctor_times",
{"aws_cognito_username": awsUsername,
"time_id": t}))
conn.commit()
response = MyHelper.getSelectTable("GetUser", event['time_zone'], event['group'],
awsUsername, "")
return {
'status': 'success',
'message': "User created successfully. A temporary password has been sent to your registered mobile no. It is recommended to change your temporary password immediately.",
'data': json.dumps(response, default=MyHelper.myConverter)
}
except:
userdelete = client.admin_delete_user(
UserPoolId=UserPoolId,
Username=awsUsername
)
return {
'status': 'error',
'message': "An error occurred!",
'data': json.dumps("", default=MyHelper.myConverter)
}
except:
return {
'status': 'error',
'message': "An error occurred!",
'data': json.dumps("", default=MyHelper.myConverter)
}
else:
return {
'status': 'error',
'message': "Enter phone number and username",
'data': json.dumps("", default=MyHelper.myConverter)
}
except Exception as e:
if e.__class__.__name__ == 'UsernameExistsException':
return {
'status': 'error',
'message': "Username already exists!",
'data': json.dumps("", default=MyHelper.myConverter)
}
else:
return {
'status': 'error',
'message': "Invalid user input data!",
'data': json.dumps(e, default=MyHelper.myConverter)
}
except RuntimeError as e:
return {
'status': 'error',
'message': "An error occurred!",
'data': json.dumps("", default=MyHelper.myConverter)
}