diff --git a/addons/mymach_fleet_intelligence/controllers/main.py b/addons/mymach_fleet_intelligence/controllers/main.py index e7cf47d..c2bf885 100644 --- a/addons/mymach_fleet_intelligence/controllers/main.py +++ b/addons/mymach_fleet_intelligence/controllers/main.py @@ -12,8 +12,9 @@ class MymachFleetController(http.Controller): Faz 8 (Zero-Trust): Sadece geçerli API_TOKEN ile veri kabul edilir. (Anti-Spoofing) """ api_token = kwargs.get('api_token') - # Gerçek senaryoda bu token config dosyasından veya veritabanından çekilir. - if api_token != 'MYMACH_SECURE_TOKEN_2026': + # Token veritabanından çekiliyor (Güvenli yöntem) + valid_token = request.env['ir.config_parameter'].sudo().get_param('mymach.api_ping_token', default='MYMACH_SECURE_TOKEN_2026') + if api_token != valid_token: return {'status': 'error', 'message': 'Erişim Reddedildi! Geçersiz API Token (Zero-Trust Security).'} vehicle = request.env['fleet.vehicle'].sudo().browse(vehicle_id) @@ -56,6 +57,10 @@ class MymachFleetController(http.Controller): """ Canlı harita ve telemetri paneli için 5 test sürücüsünün rota ve sapma verilerini toplar. """ + # Güvenlik (DAST) - Sadece Yöneticiler Bu Rotaya Erişebilir + if not request.env.user.has_group('mymach_fleet_intelligence.group_mymach_fleet_manager'): + return request.redirect('/web') + # 5 Farklı Sürücü İçin Gerçek Cadde/Sokak/Otoban Kıvrımlı Rota Verileri (Sürücü A - E) routes_db = { '34-AHM-101': { diff --git a/addons/mymach_fleet_intelligence/models/fleet_fine.py b/addons/mymach_fleet_intelligence/models/fleet_fine.py index 726c0dd..1e2d3a8 100644 --- a/addons/mymach_fleet_intelligence/models/fleet_fine.py +++ b/addons/mymach_fleet_intelligence/models/fleet_fine.py @@ -67,8 +67,17 @@ class MymachFleetFine(models.Model): else: record.is_personal_violation = False + @api.constrains('amount') + def _check_amount(self): + for record in self: + if record.amount <= 0: + raise models.ValidationError("Tutar 0 veya negatif olamaz!") + def action_confirm(self): - self.write({'state': 'confirmed'}) + for record in self: + if record.state != 'draft': + raise models.ValidationError("Sadece taslak halindeki kayıtlar onaylanabilir!") + record.write({'state': 'confirmed'}) def action_deduct_to_payroll(self): """ @@ -76,6 +85,8 @@ class MymachFleetFine(models.Model): Burada basitlik adına ilgili güvenlik loguna ceza bedeli olarak yazar ve durumu güncelleriz. """ for record in self: + if record.state != 'confirmed': + raise models.ValidationError("Sadece onaylanmış kayıtlar yansıtılabilir!") if not record.is_personal_violation: continue diff --git a/addons/mymach_fleet_intelligence/models/maintenance_cost.py b/addons/mymach_fleet_intelligence/models/maintenance_cost.py index 0b93096..82826d1 100644 --- a/addons/mymach_fleet_intelligence/models/maintenance_cost.py +++ b/addons/mymach_fleet_intelligence/models/maintenance_cost.py @@ -16,6 +16,12 @@ class MymachFleetMaintenanceCost(models.Model): currency_id = fields.Many2one('res.currency', string="Currency", default=lambda self: self.env.ref('base.TRY', raise_if_not_found=False) or self.env.company.currency_id) date = fields.Date(string="Date", default=fields.Date.context_today) + @api.constrains('amount') + def _check_amount(self): + for record in self: + if record.amount <= 0: + raise models.ValidationError("Tutar 0 veya negatif olamaz!") + @api.model_create_multi def create(self, vals_list): """ diff --git a/addons/mymach_fleet_intelligence/security/ir.model.access.csv b/addons/mymach_fleet_intelligence/security/ir.model.access.csv index 8f63829..d86a85f 100644 --- a/addons/mymach_fleet_intelligence/security/ir.model.access.csv +++ b/addons/mymach_fleet_intelligence/security/ir.model.access.csv @@ -14,5 +14,5 @@ access_mymach_fleet_handover_user,handover_user,model_mymach_fleet_handover,grou access_mymach_fleet_handover_manager,handover_manager,model_mymach_fleet_handover,group_mymach_fleet_manager,1,1,1,1 access_mymach_fleet_periodic_maintenance_user,periodic_maintenance_user,model_mymach_fleet_periodic_maintenance,group_mymach_fleet_user,1,1,0,0 access_mymach_fleet_periodic_maintenance_manager,periodic_maintenance_manager,model_mymach_fleet_periodic_maintenance,group_mymach_fleet_manager,1,1,1,1 - -access_mymach_fleet_fuel_index,mymach.fleet.fuel.index,model_mymach_fleet_fuel_index,base.group_user,1,1,1,1 +access_mymach_fleet_fuel_index_user,mymach.fleet.fuel.index.user,model_mymach_fleet_fuel_index,group_mymach_fleet_user,1,0,0,0 +access_mymach_fleet_fuel_index_manager,mymach.fleet.fuel.index.manager,model_mymach_fleet_fuel_index,group_mymach_fleet_manager,1,1,1,1 diff --git a/addons/mymach_fleet_intelligence/security/security_groups.xml b/addons/mymach_fleet_intelligence/security/security_groups.xml index b2cec55..f7ef938 100644 --- a/addons/mymach_fleet_intelligence/security/security_groups.xml +++ b/addons/mymach_fleet_intelligence/security/security_groups.xml @@ -69,5 +69,32 @@ [(1, '=', 1)] + + + Sürücüler kendi cezalarını görür + + [('driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm cezaları görür + + [(1, '=', 1)] + + + + + + Sürücüler kendi araçlarının bakımlarını görür + + [('vehicle_id.driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm bakımları görür + + [(1, '=', 1)] + +