diff --git a/rest/index.php b/rest/index.php
index 2b958046d62f362532a7ec69e89afe5d61350b0d..eaa517ada833bbbcea9fc79b283e4742c5fe2076 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -241,6 +241,8 @@ $app->put('/res/externalInfos', \Resource\controllers\ResController::class . ':u
 $app->get('/categories', \Resource\controllers\ResController::class . ':getCategories');
 $app->get('/natures', \Resource\controllers\ResController::class . ':getNatures');
 $app->get('/resources/groups/{groupSerialId}/baskets/{basketId}', \Resource\controllers\ResController::class . ':getResourcesByBasket');
+$app->get('/resources/{resId}/isAllowed', \Resource\controllers\ResController::class . ':isAllowedForCurrentUser');
+
 
 //Attachments
 $app->post('/attachments', \Attachment\controllers\AttachmentController::class . ':create');
diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index 7aeea0c588e859c89333442bb194b71267f1a756..6e2d3b617bf247007d2044671f8f5c201193f525 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -668,4 +668,13 @@ class ResController
     {
         return $response->withJson(['natures' => ResModel::getNatures()]);
     }
+
+    public function isAllowedForCurrentUser(Request $request, Response $response, array $aArgs)
+    {
+        if (!Validator::intVal()->validate($aArgs['resId']) || !ResController::hasRightByResId(['resId' => $aArgs['resId'], 'userId' => $GLOBALS['userId']])) {
+            return $response->withJson(['isAllowed' => false]);
+        }
+
+        return $response->withJson(['isAllowed' => true]);
+    }
 }
diff --git a/src/frontend/app/home.component.ts b/src/frontend/app/home.component.ts
index b13b0aacd08cd043358a437e9d142b55a546e124..f5d094fbaf132693a001310510780d860ec15c11 100755
--- a/src/frontend/app/home.component.ts
+++ b/src/frontend/app/home.component.ts
@@ -19,30 +19,30 @@ declare var angularGlobals: any;
 })
 export class HomeComponent extends AutoCompletePlugin implements OnInit {
 
-    private _mobileQueryListener: () => void;
-    mobileQuery: MediaQueryList;
-    mobileMode: boolean   = false;
-    coreUrl: string;
-    thumbnailUrl: string;
-    lang: any = LANG;
+    private _mobileQueryListener    : () => void;
+    mobileQuery                     : MediaQueryList;
+    mobileMode                      : boolean   = false;
 
-    loading: boolean = false;
-    docUrl : string = '';
-    public innerHtml: SafeHtml;
+    coreUrl             : string;
+    lang                : any       = LANG;
+    loading             : boolean   = false;
+
+    thumbnailUrl        : string;
+    docUrl              : string    = '';
+    homeData            : any;
+    homeMessage         : string;
+    dataSource          : any;
+    currentDate         : string    = "";
+
+
+    public innerHtml    : SafeHtml;
+    displayedColumns    : string[] = ['res_id', 'subject', 'creation_date'];
 
     @ViewChild('snav') snav: MatSidenav;
     @ViewChild('snav2') sidenavRight: MatSidenav;
-    
-
     @ViewChildren(MatExpansionPanel) viewPanels: QueryList<MatExpansionPanel>;
-    homeData: any;
-    homeMessage: string;
-    dataSource: any;
-    displayedColumns: string[] = ['res_id', 'subject', 'creation_date'];
-
-    currentDate : string = "";
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, public dialog: MatDialog, private sanitizer: DomSanitizer) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, public dialog: MatDialog, private sanitizer: DomSanitizer, private notify: NotificationService) {
         super(http, ['users']);
         this.mobileMode = angularGlobals.mobileMode;
         $j("link[href='merged_css.php']").remove();
@@ -66,9 +66,9 @@ export class HomeComponent extends AutoCompletePlugin implements OnInit {
         this.currentDate = event.toLocaleDateString('fr-FR', options);
 
         this.http.get(this.coreUrl + "rest/home")
-        .subscribe((data: any) => {
-            this.homeData = data;
-            this.homeMessage = data['homeMessage']
+            .subscribe((data: any) => {
+                this.homeData = data;
+                this.homeMessage = data['homeMessage']
         });
     }
 
@@ -82,7 +82,7 @@ export class HomeComponent extends AutoCompletePlugin implements OnInit {
         });
     }
 
-    goTo(row:any){
+    goTo(row:any) {
         if (this.docUrl == this.coreUrl+'rest/res/'+row.res_id+'/content' && this.sidenavRight.opened) {
             this.sidenavRight.close();
         } else {
@@ -105,7 +105,16 @@ export class HomeComponent extends AutoCompletePlugin implements OnInit {
         $j('#listContent').css({"overflow":"auto"});
     }
 
-    goToDetail(row:any){
-        location.href = "index.php?page=details&dir=indexing_searching&id="+row.res_id;
+    goToDetail(row:any) {
+        this.http.get(this.coreUrl + "rest/resources/" + row.res_id + "/isAllowed")
+            .subscribe((data: any) => {
+                if (data['isAllowed']) {
+                    location.href = "index.php?page=details&dir=indexing_searching&id=" + row.res_id;
+                } else {
+                    this.notify.error(this.lang.documentOutOfPerimeter);
+                }
+            }, () => {
+                this.notify.error(this.lang.errorOccured);
+            });
     }
 }
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index 81a275d8ad4749c24a192bf2db2ebc60ac6aa335..5136f3392da9f37c63ee71377b960c5c013c5fa7 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -686,4 +686,6 @@ export const LANG_EN = {
     "toRange"                                           : "to",
     "redirectUserListDiff"                              : "Change destination user of diffusion list model",
     "chooseNewDest"                                     : "is to <b>recipient</b> of following diffusion list model, please choose a <b>replacement</b> user",
+    "errorOccured"                                      : "An error occured",
+    "documentOutOfPerimeter"                            : "This document is out of perimeter",
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index f2eaa199d1a4cb34364f8d37d0c6ca4038034812..86f402c92150fcfb29ee0cc2d75a67a07b7918d5 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -711,4 +711,6 @@ export const LANG_FR = {
     "toRange"                                           : "à",
     "redirectUserListDiff"                              : "Changement de destinataire des modèles de liste de diffusion",
     "chooseNewDest"                                     : "est en <b>destinataire</b> des modèles de liste de difffusion suivants, veuillez choisir un utilisateur de <b>remplacement</b>",
+    "errorOccured"                                      : "Une erreur s'est produite",
+    "documentOutOfPerimeter"                            : "Ce document est en dehors de votre périmètre",
 };