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)]
+
+