diff --git a/smash/web/models/worker.py b/smash/web/models/worker.py
index ede9eb84f7322c5456033e4e2c7fe903d5bb75a0..1d98b24875489a5b474f364168a069b28451110e 100644
--- a/smash/web/models/worker.py
+++ b/smash/web/models/worker.py
@@ -18,6 +18,7 @@ from web.models.holiday import Holiday
 from web.models.availability import Availability
 from web.models.appointment import Appointment
 from web.models.appointment_type_link import AppointmentTypeLink
+from django.contrib.auth.models import Permission
 
 logger = logging.getLogger(__name__)
 
@@ -227,6 +228,25 @@ class Worker(models.Model):
 
         return office_availability.get_availability_percentage(only_working_hours=True)
 
+    def get_permissions(self, study):
+        if self.user.is_superuser:
+            return set([p.codename for p in Permission.objects.all()])
+
+        roles = self.roles.filter(study=study)
+        if roles.count() == 0:
+            return set()
+        return set(p.codename for p in roles[0].permissions.all())
+
+    def has_perm(self, codename, study):
+        roles = self.roles.filter(study=study)
+        if roles.count() == 0:
+            return False
+        
+        if role[0].permissions.filter(codename=codename).all().count() > 0:
+            return True
+        else:
+            return False
+
     @property
     def role(self):
         roles = self.roles.filter(study=GLOBAL_STUDY_ID)