Merge pull request #75 from expsa/fix-jwt-model-import-apis

[FIX] odex_web_app: import required fields
This commit is contained in:
AbuzarExp 2024-07-04 17:24:41 +03:00 committed by GitHub
commit 1c86f1da8a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 111 additions and 3 deletions

View File

@ -11,6 +11,7 @@
'python': ['jwt', ],
},
'data': [
'security/ir.model.access.csv',
'views/attendance_zone_config_view.xml',
'views/hr_employee_view.xml',
],

View File

@ -31,7 +31,7 @@ class AuthenticationController(http.Controller):
return http_helper.response(code=400, message=_('Device id is missing'), success=False)
# check fcm_token
if not kw.get('fcm_token'):
if not kw.get('fcm_token') and not kw.get('fcm_token_web'):
return http_helper.response(code=400, message=_('FCM Token is missing'), success=False)
user = request.env['res.users'].sudo().search([('login', '=', login)], limit=1)
@ -51,8 +51,12 @@ class AuthenticationController(http.Controller):
employee.sudo().write({'device_id': kw.get('device_id')})
# write fcm_token and fcm_token_web in employee
if employee and (kw.get('fcm_token') or kw.get('fcm_token_web')):
employee.sudo().write({'fcm_token': kw.get('fcm_token'), 'fcm_token_web': kw.get('fcm_token_web')})
fcm_token = kw.get('fcm_token') or kw.get('fcm_token_web')
if employee and fcm_token:
if 'fcm_token' in employee.fields_get():
employee.sudo().write({'fcm_token': fcm_token})
elif 'fcm_token_web' in employee.fields_get():
employee.sudo().write({'fcm_token_web': fcm_token})
dic['token'] = token
http_helper.cleanup();

View File

@ -2,3 +2,4 @@ from . import hr_employee
from . import attendence_zone_config
from . import mail_thread
from . import access_token
from . import res_users

View File

@ -10,6 +10,7 @@ import json, requests
class HrEmployee(models.Model):
_inherit = 'hr.employee'
device_id = fields.Char(string="Employee Device ")
fcm_token_web = fields.Char(string='FCM Web Token')

View File

@ -0,0 +1,99 @@
import werkzeug
from odoo.exceptions import AccessDenied
from odoo import api, models, fields, SUPERUSER_ID
import logging
_logger = logging.getLogger(__name__)
from ..validator import validator
class Users(models.Model):
_inherit = "res.users"
access_token_ids = fields.One2many(
string="Access Tokens",
comodel_name="jwt_provider.access_token",
inverse_name="user_id",
)
avatar = fields.Char(compute="_compute_avatar")
# is_verified = fields.Boolean("Verified" , default=False)
@classmethod
def _login(cls, db, login, password, user_agent_env):
user_id = super(Users, cls)._login(
db, login, password, user_agent_env=user_agent_env
)
if user_id:
return user_id
uid = validator.verify(password)
return uid
@api.model
def check_credentials(self, password):
try:
super(Users, self).check_credentials(password)
except AccessDenied:
# verify password as token
if not validator.verify(password):
raise
@api.depends("image_1024")
def _compute_avatar(self):
base = self.env["ir.config_parameter"].sudo().get_param("web.base.url")
for u in self:
u.avatar = werkzeug.urls.url_join(base, "rest_api/web/avatar/%d" % u.id)
# @api.multi
def to_dict(self, single=False):
res = []
for u in self:
d = u.read(["email", "name", "avatar", "mobile", "phone", "partner_id"])[0]
d["user_id"] = self.id
d["partner_id"] = self.partner_id.id
d["lang"] = self.partner_id.lang
groups = self.user_groups()
d["groups"] = groups
employee = (
self.env["hr.employee"]
.sudo()
.search([("user_id", "=", self.id)], limit=1)
)
# attendance_status = validator.get_attendance_check(employee)
d["job"] = employee.job_id.name if employee and employee.job_id else None
d["employe_id"] = employee.id if employee and employee.id else None
# d["attendance_status"] = attendance_status if attendance_status else None
res.append(d)
return res[0] if single else res
def user_groups(self):
groups = []
if self.has_group("base.group_user"):
groups.append("group_user")
if self.has_group("hr_base.group_division_manager"):
groups.append("group_division_manager")
if self.has_group("hr.group_hr_manager"):
groups.append("group_hr_manager")
if self.has_group("hr_base.group_executive_manager"):
groups.append("group_executive_manager")
if self.has_group("hr_loans_salary_advance.group_loan_user"):
groups.append("group_loan_user")
if self.has_group("hr_base.group_general_manager"):
groups.append("group_general_manager")
if self.has_group("hr_base.group_account_manager"):
groups.append("group_account_manager")
if self.has_group("hr.group_hr_user"):
groups.append("group_hr_user")
if self.has_group("hr_timesheet.group_timesheet_manager"):
groups.append("group_timesheet_manager")
if self.has_group("hr_holidays.group_hr_holidays_user"):
groups.append("group_hr_holidays_user")
if self.has_group("hr_base.group_department_manager"):
groups.append("group_department_manager")
return groups

View File

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_jwt_access_token,Read.jwt.access.token,model_jwt_provider_access_token,,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_jwt_access_token Read.jwt.access.token model_jwt_provider_access_token 1 0 0 0