Skip to content
This repository has been archived by the owner on Nov 26, 2023. It is now read-only.

Commit

Permalink
Fix extension with subfolder setups & some cleanup (#18)
Browse files Browse the repository at this point in the history
* Hopefully fix middleware logic to work with subfolder setups

* Add Flarum tsconfig & prettier setups

* Run Prettier

* Update to Webpack 5

* Update flarum/core requirement constraint

Co-authored-by: StyleCI Bot <[email protected]>
  • Loading branch information
dsevillamartin and StyleCIBot committed Feb 7, 2022
1 parent 74fcece commit ea55ab9
Show file tree
Hide file tree
Showing 7 changed files with 953 additions and 5,842 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
}
],
"require": {
"flarum/core": "^1.0.0",
"flarum/core": "^1.2.0",
"guzzlehttp/guzzle": "^7.2"
},
"replace": {
Expand Down
6,510 changes: 778 additions & 5,732 deletions js/package-lock.json

Large diffs are not rendered by default.

20 changes: 11 additions & 9 deletions js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,19 @@
"name": "@fof/stopforumspam",
"version": "0.0.0",
"dependencies": {
"flarum-webpack-config": "^1.0.0",
"webpack": "^4.46.0",
"webpack-cli": "^4.8.0"
"@flarum/prettier-config": "^1.0.0",
"flarum-tsconfig": "^1.0.2",
"flarum-webpack-config": "^2.0.0",
"webpack": "^5.67.0",
"webpack-cli": "^4.9.2"
},
"devDependencies": {
"prettier": "^2.5.1"
},
"scripts": {
"build": "webpack --mode production",
"dev": "webpack --mode development --watch",
"lint": "prettier --single-quote --trailing-comma es5 --print-width 150 --tab-width 4 --write src"
},
"devDependencies": {
"flarum": "github:flarum/types#v1",
"prettier": "^2.3.0"
"build": "webpack --mode production",
"format": "prettier --write src",
"format-check": "prettier --check src"
}
}
228 changes: 137 additions & 91 deletions js/src/admin/components/StopForumSpamSettings.js
Original file line number Diff line number Diff line change
@@ -1,97 +1,143 @@
import app from 'flarum/admin/app';
import ExtensionPage from 'flarum/admin/components/ExtensionPage';
import Link from 'flarum/common/components/Link';
import app from "flarum/admin/app";
import ExtensionPage from "flarum/admin/components/ExtensionPage";
import Link from "flarum/common/components/Link";

export default class StopForumSpamSettings extends ExtensionPage {
oninit(vnode) {
super.oninit(vnode);
}
oninit(vnode) {
super.oninit(vnode);
}

content() {
const apiRegions = ['closest', 'europe', 'us'];
const fofSpamblockEnabled = !!app.initializers.has('fof-spamblock');
content() {
const apiRegions = ["closest", "europe", "us"];
const fofSpamblockEnabled = !!app.initializers.has("fof-spamblock");

return [
<div className="StopForumSpamSettings">
<div className="container">
<div className="Form">
<div className="Introduction">
<p className="helpText">{app.translator.trans('fof-stopforumspam.admin.settings.introduction', {
a: <Link href="https://stopforumspam.com" target="_blank" external={true}/>
})}</p>
</div>
<hr />
{this.buildSettingComponent({
type: 'select',
setting: 'fof-stopforumspam.regionalEndpoint',
options: apiRegions.reduce((o, p) => {
o[p] = app.translator.trans(`fof-stopforumspam.admin.settings.region_${p}_label`);
return [
<div className="StopForumSpamSettings">
<div className="container">
<div className="Form">
<div className="Introduction">
<p className="helpText">
{app.translator.trans(
"fof-stopforumspam.admin.settings.introduction",
{
a: (
<Link
href="https://stopforumspam.com"
target="_blank"
external={true}
/>
),
}
)}
</p>
</div>
<hr />
{this.buildSettingComponent({
type: "select",
setting: "fof-stopforumspam.regionalEndpoint",
options: apiRegions.reduce((o, p) => {
o[p] = app.translator.trans(
`fof-stopforumspam.admin.settings.region_${p}_label`
);

return o;
}, {}),
label: app.translator.trans('fof-stopforumspam.admin.settings.regional_endpoint_label'),
help: app.translator.trans('fof-stopforumspam.admin.settings.regional_endpoint_help'),
default: 'closest',
})}
{this.buildSettingComponent({
type: 'boolean',
setting: 'fof-stopforumspam.username',
label: app.translator.trans('fof-stopforumspam.admin.settings.username_label'),
})}
{this.buildSettingComponent({
type: 'boolean',
setting: 'fof-stopforumspam.ip',
label: app.translator.trans('fof-stopforumspam.admin.settings.ip_label'),
})}
{this.buildSettingComponent({
type: 'boolean',
setting: 'fof-stopforumspam.email',
label: app.translator.trans('fof-stopforumspam.admin.settings.email_label'),
})}
{this.buildSettingComponent({
type: 'boolean',
setting: 'fof-stopforumspam.emailhash',
label: app.translator.trans('fof-stopforumspam.admin.settings.email_hash_label'),
help: app.translator.trans('fof-stopforumspam.admin.settings.email_hash_help'),
})}
{this.buildSettingComponent({
type: 'number',
setting: 'fof-stopforumspam.frequency',
label: app.translator.trans('fof-stopforumspam.admin.settings.frequency_label'),
help: app.translator.trans('fof-stopforumspam.admin.settings.frequency_help'),
placeholder: '5',
required: true,
})}
{this.buildSettingComponent({
type: 'number',
setting: 'fof-stopforumspam.confidence',
label: app.translator.trans('fof-stopforumspam.admin.settings.confidence_label'),
help: app.translator.trans('fof-stopforumspam.admin.settings.confidence_help'),
min: 0,
max: 100,
placeholder: '50',
required: true,
})}
{fofSpamblockEnabled
? [
<hr />,
<p className="helpText">{app.translator.trans('fof-stopforumspam.admin.settings.api_key_text')}</p>,
this.buildSettingComponent({
type: 'string',
setting: 'fof-stopforumspam.api_key',
label: app.translator.trans('fof-stopforumspam.admin.settings.api_key_label'),
help: app.translator.trans('fof-stopforumspam.admin.settings.api_key_instructions_text', {
register: <a href="https://www.stopforumspam.com/forum/register.php" />,
key: <a href="https://www.stopforumspam.com/keys" />,
})
})
]
: ''}
<hr />
{this.submitButton()}
</div>
</div>
</div>,
];
}
return o;
}, {}),
label: app.translator.trans(
"fof-stopforumspam.admin.settings.regional_endpoint_label"
),
help: app.translator.trans(
"fof-stopforumspam.admin.settings.regional_endpoint_help"
),
default: "closest",
})}
{this.buildSettingComponent({
type: "boolean",
setting: "fof-stopforumspam.username",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.username_label"
),
})}
{this.buildSettingComponent({
type: "boolean",
setting: "fof-stopforumspam.ip",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.ip_label"
),
})}
{this.buildSettingComponent({
type: "boolean",
setting: "fof-stopforumspam.email",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.email_label"
),
})}
{this.buildSettingComponent({
type: "boolean",
setting: "fof-stopforumspam.emailhash",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.email_hash_label"
),
help: app.translator.trans(
"fof-stopforumspam.admin.settings.email_hash_help"
),
})}
{this.buildSettingComponent({
type: "number",
setting: "fof-stopforumspam.frequency",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.frequency_label"
),
help: app.translator.trans(
"fof-stopforumspam.admin.settings.frequency_help"
),
placeholder: "5",
required: true,
})}
{this.buildSettingComponent({
type: "number",
setting: "fof-stopforumspam.confidence",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.confidence_label"
),
help: app.translator.trans(
"fof-stopforumspam.admin.settings.confidence_help"
),
min: 0,
max: 100,
placeholder: "50",
required: true,
})}
{fofSpamblockEnabled
? [
<hr />,
<p className="helpText">
{app.translator.trans(
"fof-stopforumspam.admin.settings.api_key_text"
)}
</p>,
this.buildSettingComponent({
type: "string",
setting: "fof-stopforumspam.api_key",
label: app.translator.trans(
"fof-stopforumspam.admin.settings.api_key_label"
),
help: app.translator.trans(
"fof-stopforumspam.admin.settings.api_key_instructions_text",
{
register: (
<a href="https://www.stopforumspam.com/forum/register.php" />
),
key: <a href="https://www.stopforumspam.com/keys" />,
}
),
}),
]
: ""}
<hr />
{this.submitButton()}
</div>
</div>
</div>,
];
}
}
10 changes: 6 additions & 4 deletions js/src/admin/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import app from 'flarum/admin/app';
import StopForumSpamSettings from './components/StopForumSpamSettings';
import app from "flarum/admin/app";
import StopForumSpamSettings from "./components/StopForumSpamSettings";

app.initializers.add('fof-stopforumspam', () => {
app.extensionData.for('fof-stopforumspam').registerPage(StopForumSpamSettings);
app.initializers.add("fof-stopforumspam", () => {
app.extensionData
.for("fof-stopforumspam")
.registerPage(StopForumSpamSettings);
});
16 changes: 16 additions & 0 deletions js/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
// Use Flarum's tsconfig as a starting point
"extends": "flarum-tsconfig",
// This will match all .ts, .tsx, .d.ts, .js, .jsx files in your `src` folder
// and also tells your Typescript server to read core's global typings for
// access to `dayjs` and `$` in the global namespace.
"include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*"],
"compilerOptions": {
// This will output typings to `dist-typings`
"declarationDir": "./dist-typings",
"baseUrl": ".",
"paths": {
"flarum/*": ["../vendor/flarum/core/js/dist-typings/*"]
}
}
}
9 changes: 4 additions & 5 deletions src/Middleware/RegisterMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
use Flarum\Http\UrlGenerator;
use FoF\StopForumSpam\StopForumSpam;
use Illuminate\Support\Arr;
use Laminas\Diactoros\Uri;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
Expand All @@ -43,11 +43,10 @@ public function __construct(StopForumSpam $sfs, UrlGenerator $url)

public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$registerUri = new Uri($this->url->to('forum')->path('/register'));
if ($request->getUri()->getPath() === $registerUri->getPath()) {
$data = $request->getParsedBody();
$registerPath = Str::replaceFirst($this->url->to('forum')->base(), '', $this->url->to('forum')->path('register'));

$shouldPrevent = false;
if ($request->getUri()->getPath() === $registerPath) {
$data = $request->getParsedBody();

try {
$shouldPrevent = $this->sfs->shouldPreventLogin([
Expand Down

0 comments on commit ea55ab9

Please sign in to comment.