Merge pull request #4651 from expsa/samir-aladawi-fix-login-otp-apis
[FIX] odex_benefit
This commit is contained in:
commit
e7379bff7e
|
|
@ -46,45 +46,77 @@ class CreatePortalAccount(http.Controller):
|
|||
force_format='E164',
|
||||
raise_exception=False).replace('+', '')
|
||||
|
||||
benefit_data = {
|
||||
# Create partner first
|
||||
Partner = request.env['res.partner'].sudo()
|
||||
partner_vals = {
|
||||
'name': f'{first_name} {second_name}',
|
||||
'father_name': first_name,
|
||||
'father_family_name': second_name,
|
||||
'sms_phone' : login,
|
||||
'email' : email,
|
||||
'is_from_portal': True,
|
||||
'applicant_name': applicant_name,
|
||||
'request_producer_relation': int(applicant_relation) if applicant_relation else False
|
||||
'email': email,
|
||||
'phone': formatted_phone,
|
||||
'account_type': account_type,
|
||||
}
|
||||
|
||||
# Check relation type
|
||||
if relation_type and int(relation_type):
|
||||
relation_record = request.env['relation.settings'].sudo().search([('id','=',relation_type)],limit = 1)
|
||||
if relation_record:
|
||||
benefit_data.update({'request_producer_relation':relation_record.id})
|
||||
|
||||
# Create the grant.benefit record
|
||||
grant_benefit = request.env['grant.benefit'].sudo().with_context(force_website=True, is_benefit=True).create(benefit_data)
|
||||
grant_benefit.create_user()
|
||||
partner = Partner.create(partner_vals)
|
||||
|
||||
user = grant_benefit.user_id.sudo()
|
||||
user.write({
|
||||
# Create user and link to partner (no reset password)
|
||||
Users = request.env['res.users'].sudo()
|
||||
user = Users.with_context(no_reset_password=True).create({
|
||||
'name': partner.name,
|
||||
'login': login,
|
||||
'partner_id': partner.id,
|
||||
'active': True,
|
||||
})
|
||||
|
||||
# Update user fields similar to create_user and original flow
|
||||
user.sudo().write({
|
||||
'password': password,
|
||||
'otp_mobile_phone': login,
|
||||
'email' : email,
|
||||
'email': email,
|
||||
'phone': formatted_phone,
|
||||
'mobile': formatted_phone,
|
||||
'account_type': account_type
|
||||
})
|
||||
# Make the user as portal
|
||||
user.sudo().write({
|
||||
'groups_id': [(3, request.env.ref('base.group_user', False).id)],
|
||||
})
|
||||
user.sudo().write({
|
||||
'groups_id': [(4, request.env.ref('base.group_portal', False).id)],
|
||||
})
|
||||
|
||||
# Generate OTP and enable it
|
||||
user.generate_otp()
|
||||
user.otp_enabled = True
|
||||
|
||||
# Only create a grant.benefit record for beneficiary/family account types
|
||||
if account_type in ('beneficiary', 'family'):
|
||||
benefit_data = {
|
||||
'name': f'{first_name} {second_name}',
|
||||
'father_name': first_name,
|
||||
'father_family_name': second_name,
|
||||
'sms_phone': login,
|
||||
'email': email,
|
||||
'is_from_portal': True,
|
||||
'applicant_name': applicant_name,
|
||||
'partner_id': partner.id,
|
||||
'user_id': user.id,
|
||||
'request_producer_relation': int(applicant_relation) if applicant_relation else False,
|
||||
}
|
||||
|
||||
# Check relation type
|
||||
if relation_type and int(relation_type):
|
||||
relation_record = request.env['relation.settings'].sudo().search([('id', '=', relation_type)], limit=1)
|
||||
if relation_record:
|
||||
benefit_data.update({'request_producer_relation': relation_record.id})
|
||||
|
||||
# Create the grant.benefit record and let its create flow run
|
||||
grant_benefit = request.env['grant.benefit'].sudo().with_context(force_website=True, is_benefit=True).create(benefit_data)
|
||||
else:
|
||||
grant_benefit = None
|
||||
|
||||
# Return success response
|
||||
data = {
|
||||
'status': True,
|
||||
'message': 'User and benefit record created successfully.',
|
||||
'user_id': user.id,
|
||||
'grant_benefit_id': grant_benefit.id,
|
||||
'grant_benefit_id': grant_benefit.id if grant_benefit else False,
|
||||
}
|
||||
return json.dumps(data)
|
||||
|
||||
|
|
|
|||
|
|
@ -2251,9 +2251,6 @@ class GrantBenefitProfile(models.Model):
|
|||
user.sudo().write({
|
||||
'groups_id': [(3, self.env.ref('base.group_user', False).id)],
|
||||
})
|
||||
# user.sudo().write({
|
||||
# 'groups_id': [(4, self.env.ref('odex_benefit.group_benefit_user', False).id)],
|
||||
# })
|
||||
user.sudo().write({
|
||||
'groups_id': [(4, self.env.ref('base.group_portal', False).id)],
|
||||
})
|
||||
|
|
|
|||
|
|
@ -7,15 +7,20 @@ import json
|
|||
class AuthSignInHome(Home):
|
||||
@http.route('/generate_otp', type='http', auth="public", website=True)
|
||||
def generate_otp(self, **kw):
|
||||
data = {'status': False,'msg': "",'otp':""}
|
||||
data = {
|
||||
'status': False,
|
||||
'msg': 'No user linked to this phone number!'
|
||||
}
|
||||
if not kw.get('otp_mobile_phone'):
|
||||
data['msg'] = 'No mobile phone number provided for OTP.'
|
||||
data['msg'] = 'No mobile phone number provided for OTP!'
|
||||
else:
|
||||
user = request.env['res.users'].sudo().search([('login', '=', kw.get('otp_mobile_phone'))], limit=1)
|
||||
user = request.env['res.users'].sudo().search([
|
||||
('login', '=', kw.get('otp_mobile_phone')),
|
||||
('partner_id.account_type', '=', kw.get('account_type'))
|
||||
], limit=1)
|
||||
if user:
|
||||
data['status'] = True
|
||||
data['msg'] = 'OTP is generated and sent successfully'
|
||||
# data['otp'] = user.generate_otp() if user else ""
|
||||
data['msg'] = 'OTP is generated and sent successfully!'
|
||||
user.generate_otp()
|
||||
|
||||
return json.dumps(data)
|
||||
|
|
|
|||
Loading…
Reference in New Issue