diff --git a/app/Http/Controllers/Common/Uploads.php b/app/Http/Controllers/Common/Uploads.php
index 06c1213f0..98274b149 100644
--- a/app/Http/Controllers/Common/Uploads.php
+++ b/app/Http/Controllers/Common/Uploads.php
@@ -28,6 +28,55 @@ class Uploads extends Controller
         return response()->file($path);
     }
 
+    /**
+     * Get the specified resource.
+     *
+     * @param  $id
+     * @return mixed
+     */
+    public function show($id, Request $request)
+    {
+        $file = false;
+        $options = false;
+        $column_name = 'attachment';
+
+        if ($request->has('column_name')) {
+            $column_name = $request->get('column_name');
+        }
+
+        if ($request->has('page')) {
+            $options = [
+                'page' => $request->get('page'),
+                'key' => $request->get('key'),
+            ];
+        }
+
+        $media = Media::find($id);
+
+        // Get file path
+        if (!$path = $this->getPath($media)) {
+            return response()->json([
+                'success' => false,
+                'error'   => true,
+                'data'    => [],
+                'message' => 'null',
+                'html'    => '',
+            ]);
+        }
+
+        $file = $media;
+
+        $html = view('partials.media.file', compact('file', 'column_name', 'options'))->render();
+
+        return response()->json([
+            'success' => true,
+            'error'   => false,
+            'data'    => [],
+            'message' => 'null',
+            'html'    => $html,
+        ]);
+    }
+
     /**
      * Download the specified resource.
      *
diff --git a/app/Listeners/Updates/V13/Version1311.php b/app/Listeners/Updates/V13/Version1311.php
new file mode 100644
index 000000000..114165eb8
--- /dev/null
+++ b/app/Listeners/Updates/V13/Version1311.php
@@ -0,0 +1,62 @@
+check($event)) {
+            return;
+        }
+
+        $this->updatePermissions();
+
+        // Update database
+        Artisan::call('migrate', ['--force' => true]);
+    }
+
+    protected function updatePermissions()
+    {
+        $permissions = [];
+
+        // Common Uploads
+        $permissions[] = Permission::firstOrCreate([
+            'name' => 'read-common-uploads',
+            'display_name' => 'Read Common Uploads',
+            'description' => 'Read Common Uploads',
+        ]);
+
+        // Attach permission to roles
+        $roles = Role::all();
+
+        foreach ($roles as $role) {
+            $allowed = ['admin', 'manager'];
+
+            if (!in_array($role->name, $allowed)) {
+                continue;
+            }
+
+            foreach ($permissions as $permission) {
+                $role->attachPermission($permission);
+            }
+        }
+    }
+}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index 86267942b..b5732a2fa 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -33,6 +33,7 @@ class EventServiceProvider extends ServiceProvider
             'App\Listeners\Updates\V13\Version135',
             'App\Listeners\Updates\V13\Version138',
             'App\Listeners\Updates\V13\Version139',
+            'App\Listeners\Updates\V13\Version1311',
         ],
         'Illuminate\Auth\Events\Login' => [
             'App\Listeners\Auth\Login',
diff --git a/database/seeds/Roles.php b/database/seeds/Roles.php
index 088d369ac..3c7a0b8be 100644
--- a/database/seeds/Roles.php
+++ b/database/seeds/Roles.php
@@ -36,7 +36,7 @@ class Roles extends Seeder
                 'common-companies' => 'c,r,u,d',
                 'common-import' => 'c',
                 'common-items' => 'c,r,u,d',
-                'common-uploads' => 'd',
+                'common-uploads' => 'r,d',
                 'common-notifications' => 'c,r,u,d',
                 'incomes-invoices' => 'c,r,u,d',
                 'incomes-revenues' => 'c,r,u,d',
@@ -76,6 +76,7 @@ class Roles extends Seeder
                 'common-companies' => 'c,r,u,d',
                 'common-import' => 'c',
                 'common-items' => 'c,r,u,d',
+                'common-uploads' => 'r',
                 'common-notifications' => 'c,r,u,d',
                 'incomes-invoices' => 'c,r,u,d',
                 'incomes-revenues' => 'c,r,u,d',
diff --git a/public/css/app.css b/public/css/app.css
index df8840fd0..ea1fb1398 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -933,3 +933,14 @@ input[type="number"] {
 .table-report {
     overflow-x: auto !important;
 }
+
+.mailbox-attachment-file-name {
+    white-space: nowrap;
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.mailbox-attachment-download {
+    margin-right: 5px;
+}
diff --git a/resources/views/auth/users/edit.blade.php b/resources/views/auth/users/edit.blade.php
index 0b8bd9b5f..d2e081b6f 100644
--- a/resources/views/auth/users/edit.blade.php
+++ b/resources/views/auth/users/edit.blade.php
@@ -86,31 +86,30 @@
                 text  : '{{ trans('general.form.select.file') }}',
                 style : 'btn-default',
                 @if($user->picture)
-                placeholder : 'picture->basename; ?>'
+                placeholder : '{{ $user->picture->basename }}'
                 @else
                 placeholder : '{{ trans('general.form.no_file_selected') }}'
                 @endif
             });
 
             @if($user->picture)
-                picture_html  = '';
-                picture_html += '    ';
-                picture_html += '        ';
-                picture_html += '             {{ $user->picture->basename }}';
-                picture_html += '        ';
-                picture_html += '    ';
-                picture_html += '    {!! Form::open(['id' => 'picture-' . $user->picture->id, 'method' => 'DELETE', 'url' => [url('uploads/' . $user->picture->id)], 'style' => 'display:inline']) !!}';
-                picture_html += '    ';
-                picture_html += '        ';
-                picture_html += '    ';
-                picture_html += '    {!! Form::close() !!}';
-                picture_html += '';
-    
-                $('.fancy-file .fake-file').append(picture_html);
-    
-                $(document).on('click', '#remove-picture', function (e) {
-                    confirmDelete("#picture-{!! $user->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $user->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
-                });
+            $.ajax({
+                url: '{{ url('uploads/' . $user->picture->id . '/show') }}',
+                type: 'GET',
+                data: {column_name: 'picture'},
+                dataType: 'JSON',
+                success: function(json) {
+                    if (json['success']) {
+                        $('.fancy-file').after(json['html']);
+                    }
+                }
+            });
+
+            @permission('delete-common-uploads')
+            $(document).on('click', '#remove-picture', function (e) {
+                confirmDelete("#picture-{!! $user->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $user->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
+            });
+            @endpermission
             @endif
             @endif
 
diff --git a/resources/views/common/companies/edit.blade.php b/resources/views/common/companies/edit.blade.php
index 29defd177..54d424874 100644
--- a/resources/views/common/companies/edit.blade.php
+++ b/resources/views/common/companies/edit.blade.php
@@ -63,31 +63,30 @@
                 text  : '{{ trans('general.form.select.file') }}',
                 style : 'btn-default',
                 @if($company->company_logo)
-                placeholder : 'company_logo->basename; ?>'
+                placeholder : '{{ $company->company_logo->basename }}'
                 @else
                 placeholder : '{{ trans('general.form.no_file_selected') }}'
                 @endif
             });
 
             @if($company->company_logo)
-                attachment_html  = '';
-                attachment_html += '    ';
-                attachment_html += '        ';
-                attachment_html += '             {{ $company->company_logo->basename }}';
-                attachment_html += '        ';
-                attachment_html += '    ';
-                attachment_html += '    {!! Form::open(['id' => 'attachment-' . $company->company_logo->id, 'method' => 'DELETE', 'url' => [url('uploads/' . $company->company_logo->id)], 'style' => 'display:inline']) !!}';
-                attachment_html += '    ';
-                attachment_html += '        ';
-                attachment_html += '    ';
-                attachment_html += '    {!! Form::close() !!}';
-                attachment_html += '';
+            $.ajax({
+                url: '{{ url('uploads/' . $company->company_logo->id . '/show') }}',
+                type: 'GET',
+                data: {column_name: 'attachment'},
+                dataType: 'JSON',
+                success: function(json) {
+                    if (json['success']) {
+                        $('.fancy-file').after(json['html']);
+                    }
+                }
+            });
 
-                $('.fancy-file .fake-file').append(attachment_html);
-
-                $(document).on('click', '#remove-attachment', function (e) {
-                    confirmDelete("#attachment-{!! $company->company_logo->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $company->company_logo->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
-                });
+            @permission('delete-common-uploads')
+            $(document).on('click', '#remove-attachment', function (e) {
+                confirmDelete("#attachment-{!! $company->company_logo->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $company->company_logo->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
+            });
+            @endpermission
             @endif
         });
     
diff --git a/resources/views/common/items/edit.blade.php b/resources/views/common/items/edit.blade.php
index 3ecf81db1..2403c6b27 100644
--- a/resources/views/common/items/edit.blade.php
+++ b/resources/views/common/items/edit.blade.php
@@ -110,31 +110,30 @@
                 text  : '{{ trans('general.form.select.file') }}',
                 style : 'btn-default',
                 @if($item->picture)
-                placeholder : 'picture->basename; ?>'
+                placeholder : '{{ $item->picture->basename }}'
                 @else
                 placeholder : '{{ trans('general.form.no_file_selected') }}'
                 @endif
             });
 
             @if($item->picture)
-                picture_html  = '';
-                picture_html += '    ';
-                picture_html += '        ';
-                picture_html += '             {{ $item->picture->basename }}';
-                picture_html += '        ';
-                picture_html += '    ';
-                picture_html += '    {!! Form::open(['id' => 'picture-' . $item->picture->id, 'method' => 'DELETE', 'url' => [url('uploads/' . $item->picture->id)], 'style' => 'display:inline']) !!}';
-                picture_html += '    ';
-                picture_html += '        ';
-                picture_html += '    ';
-                picture_html += '    {!! Form::close() !!}';
-                picture_html += '';
-    
-                $('.fancy-file .fake-file').append(picture_html);
-    
-                $(document).on('click', '#remove-picture', function (e) {
-                    confirmDelete("#picture-{!! $item->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $item->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
-                });
+            $.ajax({
+                url: '{{ url('uploads/' . $item->picture->id . '/show') }}',
+                type: 'GET',
+                data: {column_name: 'picture'},
+                dataType: 'JSON',
+                success: function(json) {
+                    if (json['success']) {
+                        $('.fancy-file').after(json['html']);
+                    }
+                }
+            });
+
+            @permission('delete-common-uploads')
+            $(document).on('click', '#remove-picture', function (e) {
+                confirmDelete("#picture-{!! $item->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $item->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
+            });
+            @endpermission
             @endif
         });
 
diff --git a/resources/views/customers/profile/edit.blade.php b/resources/views/customers/profile/edit.blade.php
index ba5464bcf..1df388a87 100644
--- a/resources/views/customers/profile/edit.blade.php
+++ b/resources/views/customers/profile/edit.blade.php
@@ -64,31 +64,30 @@
                 text  : '{{ trans('general.form.select.file') }}',
                 style : 'btn-default',
                 @if($user->picture)
-                placeholder : 'picture->basename; ?>'
+                placeholder : '{{ $user->picture->basename }}'
                 @else
                 placeholder : '{{ trans('general.form.no_file_selected') }}'
                 @endif
             });
 
             @if($user->picture)
-                picture_html  = '';
-                picture_html += '    ';
-                picture_html += '        ';
-                picture_html += '             {{ $user->picture->basename }}';
-                picture_html += '        ';
-                picture_html += '    ';
-                picture_html += '    {!! Form::open(['id' => 'picture-' . $user->picture->id, 'method' => 'DELETE', 'url' => [url('uploads/' . $user->picture->id)], 'style' => 'display:inline']) !!}';
-                picture_html += '    ';
-                picture_html += '        ';
-                picture_html += '    ';
-                picture_html += '    {!! Form::close() !!}';
-                picture_html += '';
+            $.ajax({
+                url: '{{ url('uploads/' . $user->picture->id . '/show') }}',
+                type: 'GET',
+                data: {column_name: 'picture'},
+                dataType: 'JSON',
+                success: function(json) {
+                    if (json['success']) {
+                        $('.fancy-file').after(json['html']);
+                    }
+                }
+            });
 
-                $('.fancy-file .fake-file').append(picture_html);
-
-                $(document).on('click', '#remove-picture', function (e) {
-                    confirmDelete("#picture-{!! $user->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $user->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
-                });
+            @permission('delete-common-uploads')
+            $(document).on('click', '#remove-picture', function (e) {
+                confirmDelete("#picture-{!! $user->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $user->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
+            });
+            @endpermission
             @endif
         });
     
diff --git a/resources/views/expenses/bills/edit.blade.php b/resources/views/expenses/bills/edit.blade.php
index 736cdf228..c90eaa2a8 100644
--- a/resources/views/expenses/bills/edit.blade.php
+++ b/resources/views/expenses/bills/edit.blade.php
@@ -257,27 +257,24 @@
                 text  : '{{ trans('general.form.select.file') }}',
                 style : 'btn-default',
                 @if($bill->attachment)
-                placeholder : 'attachment->basename; ?>'
+                placeholder : '{{ $bill->attachment->basename }}'
                 @else
                 placeholder : '{{ trans('general.form.no_file_selected') }}'
                 @endif
             });
 
             @if($bill->attachment)
-            attachment_html  = '';
-            attachment_html += '    ';
-            attachment_html += '        ';
-            attachment_html += '             {{ $bill->attachment->basename }}';
-            attachment_html += '        ';
-            attachment_html += '    ';
-            attachment_html += '    {!! Form::open(['id' => 'attachment-' . $bill->attachment->id, 'method' => 'DELETE', 'url' => [url('uploads/' . $bill->attachment->id)], 'style' => 'display:inline']) !!}';
-            attachment_html += '    ';
-            attachment_html += '        ';
-            attachment_html += '    ';
-            attachment_html += '    {!! Form::close() !!}';
-            attachment_html += '';
-
-            $('.fancy-file .fake-file').append(attachment_html);
+            $.ajax({
+                url: '{{ url('uploads/' . $bill->attachment->id . '/show') }}',
+                type: 'GET',
+                data: {column_name: 'attachment'},
+                dataType: 'JSON',
+                success: function(json) {
+                    if (json['success']) {
+                        $('.fancy-file').after(json['html']);
+                    }
+                }
+            });
             @endif
 
             @if(old('item'))
@@ -285,11 +282,13 @@
             @endif
         });
 
+        @permission('delete-common-uploads')
         @if($bill->attachment)
         $(document).on('click', '#remove-attachment', function (e) {
             confirmDelete("#attachment-{!! $bill->attachment->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $bill->attachment->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
         });
         @endif
+        @endpermission
 
         $(document).on('click', '#button-add-item', function (e) {
             $.ajax({
diff --git a/resources/views/expenses/bills/show.blade.php b/resources/views/expenses/bills/show.blade.php
index 489feb93f..7d9cb3cdc 100644
--- a/resources/views/expenses/bills/show.blade.php
+++ b/resources/views/expenses/bills/show.blade.php
@@ -311,23 +311,8 @@
                     
 
                     @if($bill->attachment)
-                        
-                            
-                                
-                                     {{ $bill->attachment->basename }}
-                                
-                            
-                            {!! Form::open([
-                                'id' => 'attachment-' . $bill->attachment->id,
-                                'method' => 'DELETE',
-                                'url' => [url('uploads/' . $bill->attachment->id)],
-                                'style' => 'display:inline'
-                            ]) !!}
-                            
-                                
-                            
-                            {!! Form::close() !!}
-                        
+                    @php $file = $bill->attachment; @endphp
+                    @include('partials.media.file')
                     @endif
                 
             
@@ -446,11 +431,13 @@
 
 @push('scripts')
     
diff --git a/resources/views/incomes/invoices/edit.blade.php b/resources/views/incomes/invoices/edit.blade.php
index c62194d9d..2805c057a 100644
--- a/resources/views/incomes/invoices/edit.blade.php
+++ b/resources/views/incomes/invoices/edit.blade.php
@@ -257,27 +257,24 @@
                 text  : '{{ trans('general.form.select.file') }}',
                 style : 'btn-default',
                 @if($invoice->attachment)
-                placeholder : 'attachment->basename; ?>'
+                placeholder : '{{ $invoice->attachment->basename }}'
                 @else
                 placeholder : '{{ trans('general.form.no_file_selected') }}'
                 @endif
             });
 
             @if($invoice->attachment)
-            attachment_html  = '';
-            attachment_html += '    ';
-            attachment_html += '        ';
-            attachment_html += '             {{ $invoice->attachment->basename }}';
-            attachment_html += '        ';
-            attachment_html += '    ';
-            attachment_html += '    {!! Form::open(['id' => 'attachment-' . $invoice->attachment->id, 'method' => 'DELETE', 'url' => [url('uploads/' . $invoice->attachment->id)], 'style' => 'display:inline']) !!}';
-            attachment_html += '    ';
-            attachment_html += '        ';
-            attachment_html += '    ';
-            attachment_html += '    {!! Form::close() !!}';
-            attachment_html += '';
-
-            $('.fancy-file .fake-file').append(attachment_html);
+            $.ajax({
+                url: '{{ url('uploads/' . $invoice->attachment->id . '/show') }}',
+                type: 'GET',
+                data: {column_name: 'attachment'},
+                dataType: 'JSON',
+                success: function(json) {
+                    if (json['success']) {
+                        $('.fancy-file').after(json['html']);
+                    }
+                }
+            });
             @endif
 
             @if(old('item'))
@@ -285,11 +282,13 @@
             @endif
         });
 
+        @permission('delete-common-uploads')
         @if($invoice->attachment)
         $(document).on('click', '#remove-attachment', function (e) {
             confirmDelete("#attachment-{!! $invoice->attachment->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $invoice->attachment->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete')  !!}");
         });
         @endif
+        @endpermission
 
         $(document).on('click', '#button-add-item', function (e) {
             $.ajax({
diff --git a/resources/views/incomes/invoices/show.blade.php b/resources/views/incomes/invoices/show.blade.php
index ca230a31f..368941448 100644
--- a/resources/views/incomes/invoices/show.blade.php
+++ b/resources/views/incomes/invoices/show.blade.php
@@ -339,23 +339,8 @@
                     
 
                     @if($invoice->attachment)
-                        
-                            
-                                
-                                     {{ $invoice->attachment->basename }}
-                                
-                            
-                            {!! Form::open([
-                                'id' => 'attachment-' . $invoice->attachment->id,
-                                'method' => 'DELETE',
-                                'url' => [url('uploads/' . $invoice->attachment->id)],
-                                'style' => 'display:inline'
-                            ]) !!}
-                            
-                                
-                            
-                            {!! Form::close() !!}
-                        
+                    @php $file = $invoice->attachment; @endphp
+                    @include('partials.media.file')
                     @endif
                 
             
@@ -474,11 +459,13 @@
 
 @push('scripts')
     
diff --git a/routes/web.php b/routes/web.php
index 7874cb64f..eaa8031c4 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -4,6 +4,7 @@ Route::group(['middleware' => 'language'], function () {
     Route::group(['middleware' => 'auth'], function () {
         Route::group(['prefix' => 'uploads'], function () {
             Route::get('{id}', 'Common\Uploads@get');
+            Route::get('{id}/show', 'Common\Uploads@show');
             Route::get('{id}/download', 'Common\Uploads@download');
         });