]> BookStack Code Mirror - bookstack/commitdiff
Added options to allow whole site to be made public. Fixes #3.
authorDan Brown <redacted>
Mon, 31 Aug 2015 11:29:48 +0000 (12:29 +0100)
committerDan Brown <redacted>
Mon, 31 Aug 2015 11:29:48 +0000 (12:29 +0100)
app/Http/Middleware/Authenticate.php
app/User.php
resources/views/base.blade.php
resources/views/settings/index.blade.php

index 563fb1e9d89e6336e9b10a98be0bdb407b8314a5..58b25ee3fc4cdaf84902dc9faf34e3a42e8734ee 100644 (file)
@@ -4,6 +4,7 @@ namespace Oxbow\Http\Middleware;
 
 use Closure;
 use Illuminate\Contracts\Auth\Guard;
+use Setting;
 
 class Authenticate
 {
@@ -33,7 +34,8 @@ class Authenticate
      */
     public function handle($request, Closure $next)
     {
-        if ($this->auth->guest()) {
+        $sitePublic = Setting::get('app-public', false) === 'true';
+        if ($this->auth->guest() && !$sitePublic) {
             if ($request->ajax()) {
                 return response('Unauthorized.', 401);
             } else {
index d58ded82ebc694f6bc5701e3fc265ac8d8644ff8..37e40437afc04920dcfc8ce26d440bd786829fd3 100644 (file)
@@ -68,6 +68,9 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
      */
     public function can($permissionName)
     {
+        if($this->email == 'guest') {
+            return false;
+        }
         $permissions = $this->role->permissions()->get();
         $permissionSearch = $permissions->search(function ($item, $key) use ($permissionName) {
             return $item->name == $permissionName;
index 242c5b5120913c084d35b5e936db0440e3cfff4b..2d3e54ae13cbf77ee80e2362db4cd850f90afa82 100644 (file)
                                 <a href="/settings"><i class="zmdi zmdi-settings"></i>Settings</a>
                             @endif
                         </div>
-                        <img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
-                        <div class="dropdown-container" data-dropdown>
-                            <span class="user-name" data-dropdown-toggle>
-                                {{ $currentUser->name }} <i class="zmdi zmdi-caret-down"></i>
-                            </span>
-                            <ul class="dropdown">
-                                <li>
-                                    <a href="/users/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-lg"></i>Edit Profile</a>
-                                </li>
-                                <li>
-                                    <a href="/logout" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-lg"></i>Logout</a>
-                                </li>
-                            </ul>
-                        </div>
+                        @if($signedIn)
+                            <img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
+                            <div class="dropdown-container" data-dropdown>
+                                <span class="user-name" data-dropdown-toggle>
+                                    {{ $currentUser->name }} <i class="zmdi zmdi-caret-down"></i>
+                                </span>
+                                <ul class="dropdown">
+                                    <li>
+                                        <a href="/users/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-lg"></i>Edit Profile</a>
+                                    </li>
+                                    <li>
+                                        <a href="/logout" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-lg"></i>Logout</a>
+                                    </li>
+                                </ul>
+                            </div>
+                        @endif
 
                     </div>
                 </div>
index 93e7862c295494604bfb03782455cdd4c71ebe99..36340a0b8e3236ccabbd6b71016162b196f7f43f 100644 (file)
                 <label for="setting-app-name">Application Name</label>
                 <input type="text" value="{{ Setting::get('app-name') }}" name="setting-app-name" id="setting-app-name">
             </div>
+            <div class="form-group">
+                <label for="setting-app-public">Allow public viewing?</label>
+                <label><input type="radio" name="setting-app-public" @if(Setting::get('app-public') == 'true') checked @endif value="true"> Yes</label>
+                <label><input type="radio" name="setting-app-public" @if(Setting::get('app-public') == 'false') checked @endif value="false"> No</label>
+            </div>
             <div class="form-group">
                 <button type="submit" class="button pos">Update Settings</button>
             </div>