Update Profile, fix unauthenticated private profiles

This commit is contained in:
Daniel Supernault 2021-07-07 00:40:01 -06:00
parent 1a2e41b1e3
commit 9017f7c4e1
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
4 changed files with 115 additions and 123 deletions

View file

@ -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;

View file

@ -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() {

View file

@ -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

View file

@ -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