Skip to content

Commit c28e2f5

Browse files
authored
Merge pull request #11 from DanielRTRD/patch-3
Unsubscribing
2 parents 6ed64be + 3b4e920 commit c28e2f5

File tree

6 files changed

+93
-5
lines changed

6 files changed

+93
-5
lines changed

resources/lang/en/mail.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
'subject' => 'Early access to :name',
1313
'message' => [
1414
'intro' => 'Thanks for requesting early access to :name! We will email you with more information when we are ready to have you try it out.',
15+
'share' => 'Want to share our project with the world? Please help us reach more people by sharing on Twitter: :url',
16+
'unsubscribe' => 'Unsubscribe from emails',
1517
],
1618
],
1719
'unsubscribed' => [

resources/lang/en/messages.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,15 @@
1616
'no_spam' => 'No spam mail. We promise.',
1717
'welcome' => 'Welcome to :name',
1818
'twitter_share_text' => '.@:handle is coming soon. Request early access to be one of the first people to try it out :url #:handle',
19+
20+
'unsubscribe' => [
21+
'title' => 'Unsubscribe from :name',
22+
'description' => 'We\'re sorry to se you go. Please confirm with your email.',
23+
'button' => 'Unsubscribe',
24+
'alerts' => [
25+
'error' => 'An error occurred. Please try again.',
26+
'success' => 'You have been successfully unsubscribed.',
27+
],
28+
29+
],
1930
];
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
@extends('early-access::layouts.main')
2+
3+
@section('content')
4+
<div class="container flex flex-col md:flex-row items-center justify-between">
5+
<div class="md:pr-5 lg:pr-10 md:w-2/5">
6+
<div class="text-center md:text-left">
7+
<h1 class="text-3xl lg:text-5xl text-indigo-darker font-logo font-medium uppercase leading-normal">
8+
@lang('early-access::messages.unsubscribe.title', ['name' => config('app.name')])
9+
</h1>
10+
<h4 class="text-base font-light leading-normal grey-soft">
11+
@lang('early-access::messages.unsubscribe.description', ['name' => config('app.name')])
12+
</h4>
13+
</div>
14+
<div class="mt-10">
15+
@if (session('success'))
16+
<div class="mb-2 p-3 rounded-lg bg-green-lightest text-sm text-green-dark font-medium"
17+
id="success-msg">
18+
@lang('early-access::messages.unsubscribe.alerts.success')
19+
</div>
20+
@endif
21+
22+
@if ($errors->has('email') or session('error'))
23+
<div class="mb-2 p-3 rounded-lg bg-red-lightest text-sm text-grey-darker font-medium"
24+
id="error-msg">
25+
{{ $errors->has('email') ? $errors->first('email') : trans('early-access::messages.unsubscribe.alerts.error') }}
26+
</div>
27+
@endif
28+
29+
<form action="{{ route('early-access.verify-unsubscription') }}" method="post">
30+
@method('delete')
31+
@csrf
32+
<div class="flex flex-col lg:flex-row font-light">
33+
<input required
34+
type="email"
35+
name="email"
36+
value="{{ old('email') }}"
37+
placeholder="@lang('early-access::common.email_address')"
38+
class="p-4 w-full lg:w-4/5 rounded-lg lg:rounded-r-none bg-grey-lighter focus:bg-grey-light focus:outline-none"
39+
/>
40+
<button type="submit"
41+
class="mt-2 lg:mt-0 p-4 lg:px-0 w-full lg:w-2/5 rounded-lg lg:rounded-l-none bg-indigo-dark shadow-lg
42+
lg:shadow-none text-sm text-white uppercase focus:outline-none"
43+
>
44+
@lang('early-access::messages.unsubscribe.button')<sup>&dagger;</sup>
45+
</button>
46+
</div>
47+
</form>
48+
<div class="mt-10">
49+
<span class="text-xs text-grey font-light tracking-wide">
50+
<sup>&dagger;</sup>@lang('early-access::messages.no_spam')
51+
</span>
52+
</div>
53+
</div>
54+
</div>
55+
<div class="mt-16 md:mt-0 md:pl-5 lg:pl-10 md:w-3/5 text-center md:text-left">
56+
<img src="{{ asset('vendor/early-access/svg/placeholder.svg') }}" class="block"/>
57+
</div>
58+
</div>
59+
@endsection

routes/web.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
Route::post($basePath, 'EarlyAccessController@subscribe')
2424
->name('early-access.subscribe');
2525

26-
Route::delete($basePath, 'EarlyAccessController@unsubscribe')
26+
Route::get("{$basePath}/unsubscribe", 'EarlyAccessController@unsubscribe')
2727
->name('early-access.unsubscribe');
28+
29+
Route::delete("{$basePath}/unsubscribe", 'EarlyAccessController@verifyUnsubscription')
30+
->name('early-access.verify-unsubscription');
2831
}

src/Http/Controllers/EarlyAccessController.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,30 +36,42 @@ public function subscribe(Request $request)
3636
'name' => 'string|between:3,100',
3737
]);
3838

39-
if (! $subscriber = Subscriber::make()->findByEmail($data['email'])) {
39+
if (!$subscriber = Subscriber::make()->findByEmail($data['email'])) {
4040
$subscriber = Subscriber::make($data);
4141
$subscriber->subscribe();
4242
}
4343

4444
return redirect()->route('early-access.index')->withSuccess(true);
4545
}
4646

47+
/**
48+
* Show the early access page.
49+
*
50+
* @return \Illuminate\Http\Response
51+
*/
52+
public function unsubscribe()
53+
{
54+
$details = $this->getBeaconDetails();
55+
56+
return view('early-access::unsubscribe', compact('details'));
57+
}
58+
4759
/**
4860
* Unsubscribe.
4961
*
5062
* @param \Neo\EarlyAccess\Subscriber $subscriber
5163
* @param \Illuminate\Http\Request $request
5264
* @return \Illuminate\Http\JsonResponse
5365
*/
54-
public function unsubscribe(Subscriber $subscriber, Request $request)
66+
public function verifyUnsubscription(Subscriber $subscriber, Request $request)
5567
{
5668
$data = $request->validate(['email' => 'required|email']);
5769

5870
$unsubscribed = with($subscriber->findByEmail($data['email']), function ($user) {
5971
return $user ? $user->unsubscribe() : false;
6072
});
6173

62-
return redirect()->route('early-access.index')->with([
74+
return redirect()->route('early-access.unsubscribe')->with([
6375
($unsubscribed ? 'success' : 'error') => true,
6476
]);
6577
}

src/Notifications/UserSubscribed.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public function toMail()
4747
return (new MailMessage)
4848
->subject(trans('early-access::mail.subscribed.subject', ['name' => config('app.name')]))
4949
->line(trans('early-access::mail.subscribed.message.intro', ['name' => config('app.name')]))
50-
->action('Share on Twitter', route('early-access.share'));
50+
->line(trans('early-access::mail.subscribed.message.share', ['url' => route('early-access.share')]))
51+
->action(trans('early-access::mail.subscribed.message.unsubscribe'), route('early-access.unsubscribe'));
5152
}
5253
}

0 commit comments

Comments
 (0)