1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

chore: require email address for subscriptions

This commit is contained in:
Ferdinand Mütsch 2022-12-23 14:05:34 +01:00
parent 8a94fef06b
commit 195755581b
3 changed files with 19 additions and 5 deletions

View File

@ -181,6 +181,10 @@ func (h *SettingsHandler) actionUpdateUser(w http.ResponseWriter, r *http.Reques
return http.StatusBadRequest, "", "invalid parameters" return http.StatusBadRequest, "", "invalid parameters"
} }
if user.Email == "" && user.HasActiveSubscription() {
return http.StatusBadRequest, "", "cannot unset email while subscription is active"
}
user.Email = payload.Email user.Email = payload.Email
user.Location = payload.Location user.Location = payload.Location
user.ReportsWeekly = payload.ReportsWeekly user.ReportsWeekly = payload.ReportsWeekly

View File

@ -209,8 +209,6 @@ func (h *SubscriptionHandler) handleSubscriptionEvent(subscription *stripe.Subsc
until := models.CustomTime(time.Unix(subscription.CurrentPeriodEnd, 0)) until := models.CustomTime(time.Unix(subscription.CurrentPeriodEnd, 0))
if user.SubscribedUntil == nil || !user.SubscribedUntil.T().Equal(until.T()) { if user.SubscribedUntil == nil || !user.SubscribedUntil.T().Equal(until.T()) {
println(user.SubscribedUntil.T().String())
println(until.T().String())
user.SubscribedUntil = &until user.SubscribedUntil = &until
logbuch.Info("user %s got active subscription %s until %v", user.ID, subscription.ID, user.SubscribedUntil) logbuch.Info("user %s got active subscription %s until %v", user.ID, subscription.ID, user.SubscribedUntil)
} }

View File

@ -79,13 +79,20 @@
<div class="flex mb-8"> <div class="flex mb-8">
<div class="w-1/2 mr-4 inline-block"> <div class="w-1/2 mr-4 inline-block">
<label class="font-semibold text-gray-300" for="email">E-Mail Address</label> <label class="font-semibold text-gray-300" for="email">E-Mail Address</label>
<span class="block text-sm text-gray-600">Optional in general, but required for weekly reports and for resetting your password.</span> <span class="block text-sm text-gray-600">
Optional in general, but required for weekly reports and for resetting your password.
{{ if .User.HasActiveSubscription }}
You cannot unset or change your e-mail address while you have an active subscription.
{{ end }}
</span>
</div> </div>
<div class="w-1/2 ml-4"> <div class="w-1/2 ml-4">
<input class="input-default" <input class="input-default {{ if .User.HasActiveSubscription }}cursor-not-allowed{{ end }}"
type="email" id="email" type="email" id="email"
name="email" placeholder="Enter your e-mail address" name="email" placeholder="Enter your e-mail address"
value="{{ .User.Email }}"> value="{{ .User.Email }}"
{{ if .User.HasActiveSubscription }}disabled{{ end }}
>
</div> </div>
</div> </div>
@ -719,7 +726,12 @@
{{ if not .User.HasActiveSubscription }} {{ if not .User.HasActiveSubscription }}
<form action="subscription/checkout" method="post" class="mt-8 mb-8" id="form-subscription-checkout"> <form action="subscription/checkout" method="post" class="mt-8 mb-8" id="form-subscription-checkout">
{{ if ne .User.Email "" }}
<button type="submit" class="btn-primary mt-4">Subscribe ({{ .SubscriptionPrice }} / mo)</button> <button type="submit" class="btn-primary mt-4">Subscribe ({{ .SubscriptionPrice }} / mo)</button>
{{ else }}
<button type="submit" class="btn-disabled cursor-pointer mt-4" disabled title="">Subscribe ({{ .SubscriptionPrice }} / mo)</button><br>
<span class="text-xs text-gray-600">You have to provide an e-mail address to purchase a subscription.</span>
{{ end }}
</form> </form>
{{ else }} {{ else }}
<form action="subscription/portal" method="post" class="mt-8 mb-8" id="form-subscription-portal"> <form action="subscription/portal" method="post" class="mt-8 mb-8" id="form-subscription-portal">