Add interface to block ip-addresses or clients due to abuse (#15484)
* Read IP blocks from database * begin building general blocking solution * add new frontend files * Add UI for managing blockers * correctly reset local data after creating blocker * Tweak wording * Add UI for managing blockers * restructure admin pages * improve test coverage * Improve blocker UI * add blocker to block emails from registration * lint fix * fix * lint fixes * fix import * add new permission for managing blockers * improve permission check * fix managing permissions from admin * improve navbar display for non fullAccess admin * update block error strings * lint fix * add option to errorHandler to skip logging * validate blocker value during input * improve blocker form display * chore(subproj): reconcile habitica-images * fix(scripts): use same Mongo version for dev/test * fix(whitespace): eof * documentation improvements * remove nconf import * remove old test --------- Co-authored-by: Kalista Payne <kalista@habitica.com> Co-authored-by: Kalista Payne <sabrecat@gmail.com>
This commit is contained in:
@@ -7,10 +7,15 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_taskboard.png')" class="img-fluid">
|
||||
<img
|
||||
:src="makeUrl('features_taskboard.png')"
|
||||
class="img-fluid"
|
||||
>
|
||||
<h2>{{ $t('marketing1Lead1Title') }}</h2>
|
||||
<div class="row justify-content-md-center">
|
||||
<p class="col col-lg-8 col-xl-6 margin-auto description">{{ $t('marketing1Lead1') }}</p>
|
||||
<p class="col col-lg-8 col-xl-6 margin-auto description">
|
||||
{{ $t('marketing1Lead1') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -18,12 +23,16 @@
|
||||
<div class="col-md-6 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_gear.png')">
|
||||
<h2>{{ $t('marketing1Lead2Title') }}</h2>
|
||||
<p class="description">{{ $t('marketing1Lead2') }}</p>
|
||||
<p class="description">
|
||||
{{ $t('marketing1Lead2') }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_items.png')">
|
||||
<h2>{{ $t('marketing1Lead3Title') }}</h2>
|
||||
<p class="description">{{ $t('marketing1Lead3') }}</p>
|
||||
<p class="description">
|
||||
{{ $t('marketing1Lead3') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@@ -35,19 +44,26 @@
|
||||
<div class="row mb-5">
|
||||
<div class="col-12">
|
||||
<h2>{{ $t('marketing2Lead1Title') }}</h2>
|
||||
<p class="description">{{ $t('marketing2Lead1') }}</p>
|
||||
<p class="description">
|
||||
{{ $t('marketing2Lead1') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_monsters.png')">
|
||||
<h2>{{ $t('marketing2Lead2Title') }}</h2>
|
||||
<p class="description" v-markdown="$t('marketing2Lead2')"></p>
|
||||
<p
|
||||
v-markdown="$t('marketing2Lead2')"
|
||||
class="description"
|
||||
></p>
|
||||
</div>
|
||||
<div class="col-md-6 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_challenges.png')">
|
||||
<h2>{{ $t('marketing2Lead3Title') }}</h2>
|
||||
<p class="description">{{ $t('marketing2Lead3') }}</p>
|
||||
<p class="description">
|
||||
{{ $t('marketing2Lead3') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@@ -60,12 +76,18 @@
|
||||
<div class="col-md-6 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_mobile.png')">
|
||||
<h2>{{ $t('marketing3Lead1Title') }}</h2>
|
||||
<p class="description" v-markdown="$t('marketing3Lead1')"></p>
|
||||
<p
|
||||
v-markdown="$t('marketing3Lead1')"
|
||||
class="description"
|
||||
></p>
|
||||
</div>
|
||||
<div class="col-md-6 mb-5 mb-md-0">
|
||||
<img :src="makeUrl('features_opensource.png')">
|
||||
<h2>{{ $t('marketing3Lead2Title') }}</h2>
|
||||
<p class="description" v-markdown="$t('marketing3Lead2')"></p>
|
||||
<p
|
||||
v-markdown="$t('marketing3Lead2')"
|
||||
class="description"
|
||||
></p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@@ -80,7 +102,9 @@
|
||||
<img src="@/assets/images/marketing/education.png">
|
||||
<div class="media-body">
|
||||
<h2>{{ $t('marketing4Lead1Title') }}</h2>
|
||||
<p class="description">{{ $t('marketing4Lead1') }}</p>
|
||||
<p class="description">
|
||||
{{ $t('marketing4Lead1') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -89,7 +113,9 @@
|
||||
<img src="@/assets/images/marketing/wellness.png">
|
||||
<div class="media-body">
|
||||
<h2>{{ $t('marketing4Lead2Title') }}</h2>
|
||||
<p class="description">{{ $t('marketing4Lead2') }}</p>
|
||||
<p class="description">
|
||||
{{ $t('marketing4Lead2') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user