瀏覽代碼

Update Profile, fix unauthenticated private profiles

Daniel Supernault 4 年之前
父節點
當前提交
9017f7c4e1

+ 2 - 1
app/Http/Controllers/ProfileController.php

@@ -47,7 +47,8 @@ class ProfileController extends Controller
 			});
 
 			if ($user->is_private == true) {
-				abort(404);
+				$profile = null;
+				return view('profile.private', compact('user'));
 			}
 
 			$owner = false;

+ 5 - 4
resources/assets/js/components/Profile.vue

@@ -703,6 +703,11 @@
 			this.fetchProfile();
 			let u = new URLSearchParams(window.location.search);
 			let forceMetro = localStorage.getItem('pf_metro_ui.exp.forceMetro') == 'true';
+
+			if(u.has('ui') && u.get('ui') == 'moment' && this.layout != 'moment') {
+				this.layout = 'moment';
+			}
+
 			if(forceMetro == true || u.has('ui') && u.get('ui') == 'metro' && this.layout != 'metro') {
 				this.layout = 'metro';
 			}
@@ -739,10 +744,6 @@
 					}
 				});
 			}
-			if(window.outerWidth < 576) {
-				$('nav.navbar').hide();
-				this.isMobile = true;
-			}
 		},
 
 		updated() {

+ 90 - 100
resources/views/profile/partial/private-info.blade.php

@@ -1,107 +1,97 @@
 <div class="bg-white py-5 border-bottom">
-  <div class="container">
-    <div class="row">
-      <div class="col-12 col-md-4 d-flex">
-        <div class="profile-avatar mx-auto">
-          <img class="rounded-circle box-shadow" src="{{$user->avatarUrl()}}" width="172px" height="172px">
-        </div>
-      </div>
-      <div class="col-12 col-md-8 d-flex align-items-center">
-        <div class="profile-details">
-          <div class="username-bar pb-2 d-flex align-items-center">
-            <span class="font-weight-ultralight h3">{{$user->username}}</span>
-            @if(Auth::check() && $is_following == true)
-            <span class="pl-4">
-              <form class="follow-form" method="post" action="/i/follow" style="display: inline;" data-id="{{$user->id}}" data-action="unfollow">
-                @csrf
-                <input type="hidden" name="item" value="{{$user->id}}">
-                <button class="btn btn-outline-secondary font-weight-bold px-4 py-0" type="submit">Unfollow</button>
-              </form>
-            </span>
-            @elseif(Auth::check() && $requested == true)
-            <span class="pl-4">
-              <button class="btn btn-outline-secondary font-weight-bold px-4 py-0 disabled" disabled type="button">Follow Requested</button>
-            </span>
-            @elseif(Auth::check() && $is_following == false)
-            <span class="pl-4">
-              <form class="follow-form" method="post" action="/i/follow" style="display: inline;" data-id="{{$user->id}}" data-action="follow">
-                @csrf
-                <input type="hidden" name="item" value="{{$user->id}}">
-                <button class="btn btn-primary font-weight-bold px-4 py-0" type="submit">Follow</button>
-              </form>
-            </span>
-            @endif
-            <span class="pl-4">
-              <i class="fas fa-cog fa-lg text-muted cursor-pointer" data-toggle="modal" data-target="#ctxProfileMenu"></i>
-              <div class="modal" tabindex="-1" role="dialog" id="ctxProfileMenu">
-                <div class="modal-dialog modal-dialog-centered modal-sm">
-                  <div class="modal-content">
-                    <div class="modal-body p-0">
-                      <div class="list-group-item cursor-pointer text-center rounded text-dark" onclick="window.App.util.clipboard('{{$user->url()}}');$('#ctxProfileMenu').modal('hide')">
-                        Copy Link
-                      </div>
-                      @auth
-                      <div class="list-group-item cursor-pointer text-center rounded text-dark" onclick="muteProfile()">
-                        Mute
-                      </div>
-                      <a class="list-group-item cursor-pointer text-center rounded text-dark text-decoration-none" href="i/report?type=user&id={{$user->id}}">
-                        Report User
-                      </a>
-                      <div class="list-group-item cursor-pointer text-center rounded text-dark" onclick="blockProfile()">
-                        Block
-                      </div>
-                      @endauth
-                      <div class="list-group-item cursor-pointer text-center rounded text-muted" onclick="$('#ctxProfileMenu').modal('hide')">
-                        Close
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </span>
-          </div>
-          <div class="profile-stats pb-3 d-inline-flex lead">
-            <div class="font-weight-light pr-5">
-              <span class="font-weight-bold">{{$user->statuses()->whereNull('reblog_of_id')->whereNull('in_reply_to_id')->count()}}</span> 
-              Posts
-            </div>
-          </div>
-          <p class="lead mb-0">
-            <span class="font-weight-bold">{{$user->name}}</span> 
-            @if($user->remote_url)
-            <span class="badge badge-info">REMOTE PROFILE</span>
-            @endif
-          </p>
-          <p class="mb-0 lead">{{$user->bio}}</p>
-          <p class="mb-0"><a href="{{$user->website}}" class="font-weight-bold" rel="me external nofollow noopener" target="_blank">{{str_limit($user->website, 30)}}</a></p>
-        </div>
-      </div>
-    </div>
-  </div>
+	<div class="container">
+		<div class="row">
+			<div class="col-12 col-md-4 d-flex">
+				<div class="profile-avatar mx-auto">
+					<img class="rounded-circle box-shadow" src="{{$user->avatarUrl()}}" width="172px" height="172px">
+				</div>
+			</div>
+			<div class="col-12 col-md-8 d-flex align-items-center">
+				<div class="profile-details">
+					<div class="username-bar pb-2 d-flex align-items-center">
+						<span class="font-weight-ultralight h3">{{$user->username}}</span>
+						@if(Auth::check() && $is_following == true)
+						<span class="pl-4">
+							<form class="follow-form" method="post" action="/i/follow" style="display: inline;" data-id="{{$user->id}}" data-action="unfollow">
+								@csrf
+								<input type="hidden" name="item" value="{{$user->id}}">
+								<button class="btn btn-outline-secondary font-weight-bold px-4 py-0" type="submit">Unfollow</button>
+							</form>
+						</span>
+						@elseif(Auth::check() && $requested == true)
+						<span class="pl-4">
+							<button class="btn btn-outline-secondary font-weight-bold px-4 py-0 disabled" disabled type="button">Follow Requested</button>
+						</span>
+						@elseif(Auth::check() && $is_following == false)
+						<span class="pl-4">
+							<form class="follow-form" method="post" action="/i/follow" style="display: inline;" data-id="{{$user->id}}" data-action="follow">
+								@csrf
+								<input type="hidden" name="item" value="{{$user->id}}">
+								<button class="btn btn-primary font-weight-bold px-4 py-0" type="submit">Follow</button>
+							</form>
+						</span>
+						@endif
+						@auth
+						<span class="pl-4">
+							<i class="fas fa-cog fa-lg text-muted cursor-pointer" data-toggle="modal" data-target="#ctxProfileMenu"></i>
+							<div class="modal" tabindex="-1" role="dialog" id="ctxProfileMenu">
+								<div class="modal-dialog modal-dialog-centered modal-sm">
+									<div class="modal-content">
+										<div class="modal-body p-0">
+											<div class="list-group-item cursor-pointer text-center rounded text-dark" onclick="window.App.util.clipboard('{{$user->url()}}');$('#ctxProfileMenu').modal('hide')">
+												Copy Link
+											</div>
+											@auth
+											<div class="list-group-item cursor-pointer text-center rounded text-dark" onclick="muteProfile()">
+												Mute
+											</div>
+											<a class="list-group-item cursor-pointer text-center rounded text-dark text-decoration-none" href="i/report?type=user&id={{$user->id}}">
+												Report User
+											</a>
+											<div class="list-group-item cursor-pointer text-center rounded text-dark" onclick="blockProfile()">
+												Block
+											</div>
+											@endauth
+											<div class="list-group-item cursor-pointer text-center rounded text-muted" onclick="$('#ctxProfileMenu').modal('hide')">
+												Close
+											</div>
+										</div>
+									</div>
+								</div>
+							</div>
+						</span>
+						@endauth
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
 </div>
 
 @push('scripts')
+@auth
 <script type="text/javascript">
-  function muteProfile() {
-      axios.post('/i/mute', {
-        type: 'user',
-        item: '{{$user->id}}'
-      }).then(res => {
-        $('#ctxProfileMenu').modal('hide');
-        $('#ctxProfileMenu').hide();
-        swal('Muted Profile', 'You have successfully muted this profile.', 'success');
-      });
-  }
-  function blockProfile() {
-      axios.post('/i/block', {
-        type: 'user',
-        item: '{{$user->id}}'
-      }).then(res => {
-        $('#ctxProfileMenu').modal('hide');
-        $('#ctxProfileMenu').hide();
-        swal('Blocked Profile', 'You have successfully blocked this profile.', 'success');
-      });
-  }
+	function muteProfile() {
+			axios.post('/i/mute', {
+				type: 'user',
+				item: '{{$user->id}}'
+			}).then(res => {
+				$('#ctxProfileMenu').modal('hide');
+				$('#ctxProfileMenu').hide();
+				swal('Muted Profile', 'You have successfully muted this profile.', 'success');
+			});
+	}
+	function blockProfile() {
+			axios.post('/i/block', {
+				type: 'user',
+				item: '{{$user->id}}'
+			}).then(res => {
+				$('#ctxProfileMenu').modal('hide');
+				$('#ctxProfileMenu').hide();
+				swal('Blocked Profile', 'You have successfully blocked this profile.', 'success');
+			});
+	}
 
 </script>
-@endpush
+@endauth
+@endpush

+ 18 - 18
resources/views/profile/private.blade.php

@@ -2,28 +2,28 @@
 
 @section('content')
 @if (session('error'))
-    <div class="alert alert-danger text-center font-weight-bold mb-0">
-        {{ session('error') }}
-    </div>
+		<div class="alert alert-danger text-center font-weight-bold mb-0">
+				{{ session('error') }}
+		</div>
 @endif
 @include('profile.partial.private-info')
 
 <div class="container">
-  <div class="profile-timeline mt-2 mt-md-4">
-    <div class="card">
-      <div class="card-body py-5">
-        <p class="text-center lead font-weight-bold mb-0">
-          {{__('profile.privateProfileWarning')}}
-        </p>
+	<div class="profile-timeline mt-2 mt-md-4">
+		<div class="">
+			<div class="py-5">
+				<p class="text-center lead font-weight-bold">
+					{{__('profile.privateProfileWarning')}}
+				</p>
 
-        @if(!Auth::check())
-        <p class="text-center mb-0">{{ __('profile.alreadyFollow', ['username'=>$user->username])}}</p>
-        <p class="text-center mb-0"><a href="{{route('login')}}">{{__('Log in')}}</a></p>
-        <p class="text-center mb-0">{{__('profile.loginToSeeProfile')}}</p>
-        @endif
-      </div>
-    </div>
-  </div>
+				@if(!Auth::check())
+				<p class="text-center mb-0">{{ __('profile.alreadyFollow', ['username'=>$user->username])}}</p>
+				<p class="text-center mb-0"><a href="{{route('login')}}">{{__('Log in')}}</a></p>
+				<p class="text-center mb-0">{{__('profile.loginToSeeProfile')}}</p>
+				@endif
+			</div>
+		</div>
+	</div>
 </div>
 
 @endsection
@@ -34,4 +34,4 @@
 @if($user->remote_url)
 <meta name="robots" content="noindex, nofollow">
 @endif
-@endpush
+@endpush