Add honeypot for user and form creation. Fixes #433

This commit is contained in:
Dessalines 2021-09-29 19:54:18 -04:00
parent 3afdbdb941
commit 60da3ac830
5 changed files with 42 additions and 7 deletions

View file

@ -72,7 +72,7 @@
"husky": "^7.0.2", "husky": "^7.0.2",
"import-sort-style-module": "^6.0.0", "import-sort-style-module": "^6.0.0",
"iso-639-1": "^2.1.9", "iso-639-1": "^2.1.9",
"lemmy-js-client": "0.13.0", "lemmy-js-client": "0.13.1-rc.1",
"lint-staged": "^11.0.1", "lint-staged": "^11.0.1",
"mini-css-extract-plugin": "^2.3.0", "mini-css-extract-plugin": "^2.3.0",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",

View file

@ -364,3 +364,7 @@ br.big {
.tribute-container .menu-highlighted { .tribute-container .menu-highlighted {
font-weight: bold; font-weight: bold;
} }
.honeypot {
display:none !important;
}

View file

@ -1,3 +1,5 @@
import { Options, passwordStrength } from "check-password-strength";
import { I18nKeys } from "i18next";
import { Component, linkEvent } from "inferno"; import { Component, linkEvent } from "inferno";
import { T } from "inferno-i18next-dess"; import { T } from "inferno-i18next-dess";
import { import {
@ -10,7 +12,6 @@ import {
} from "lemmy-js-client"; } from "lemmy-js-client";
import { Subscription } from "rxjs"; import { Subscription } from "rxjs";
import { i18n } from "../../i18next"; import { i18n } from "../../i18next";
import { Options, passwordStrength } from "check-password-strength";
import { UserService, WebSocketService } from "../../services"; import { UserService, WebSocketService } from "../../services";
import { import {
authField, authField,
@ -26,7 +27,6 @@ import {
} from "../../utils"; } from "../../utils";
import { HtmlTags } from "../common/html-tags"; import { HtmlTags } from "../common/html-tags";
import { Icon, Spinner } from "../common/icon"; import { Icon, Spinner } from "../common/icon";
import {I18nKeys} from "i18next";
const passwordStrengthOptions: Options<string> = [ const passwordStrengthOptions: Options<string> = [
{ {
@ -76,6 +76,7 @@ export class Signup extends Component<any, State> {
show_nsfw: false, show_nsfw: false,
captcha_uuid: undefined, captcha_uuid: undefined,
captcha_answer: undefined, captcha_answer: undefined,
honeypot: undefined,
}, },
registerLoading: false, registerLoading: false,
captcha: undefined, captcha: undefined,
@ -272,6 +273,16 @@ export class Signup extends Component<any, State> {
</T> </T>
</div> </div>
)} )}
<input
tabIndex={-1}
autoComplete="false"
name="a_password"
type="text"
class="form-control honeypot"
id="register-honey"
value={this.state.registerForm.honeypot}
onInput={linkEvent(this, this.handleHoneyPotChange)}
/>
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-10"> <div class="col-sm-10">
<button type="submit" class="btn btn-secondary"> <button type="submit" class="btn btn-secondary">
@ -371,6 +382,11 @@ export class Signup extends Component<any, State> {
i.setState(i.state); i.setState(i.state);
} }
handleHoneyPotChange(i: Signup, event: any) {
i.state.registerForm.honeypot = event.target.value;
i.setState(i.state);
}
handleRegenCaptcha(i: Signup) { handleRegenCaptcha(i: Signup) {
i.audio = null; i.audio = null;
i.state.captchaPlaying = false; i.state.captchaPlaying = false;

View file

@ -326,6 +326,16 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
</div> </div>
</div> </div>
)} )}
<input
tabIndex={-1}
autoComplete="false"
name="a_password"
type="text"
class="form-control honeypot"
id="register-honey"
value={this.state.postForm.honeypot}
onInput={linkEvent(this, this.handleHoneyPotChange)}
/>
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-10"> <div class="col-sm-10">
<button <button
@ -466,6 +476,11 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
i.setState(i.state); i.setState(i.state);
} }
handleHoneyPotChange(i: PostForm, event: any) {
i.state.postForm.honeypot = event.target.value;
i.setState(i.state);
}
handleCancel(i: PostForm) { handleCancel(i: PostForm) {
i.props.onCancel(); i.props.onCancel();
} }

View file

@ -4915,10 +4915,10 @@ lcid@^1.0.0:
dependencies: dependencies:
invert-kv "^1.0.0" invert-kv "^1.0.0"
lemmy-js-client@0.13.0: lemmy-js-client@0.13.1-rc.1:
version "0.13.0" version "0.13.1-rc.1"
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.13.0.tgz#fc15f603a8492e0c2542a3b55fb4df06a182b4fc" resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.13.1-rc.1.tgz#e1af4749a5493954a17f87b7b20dcccb8c585f22"
integrity sha512-7RBgbd3hOTq8fb+oef3B8U1O1UmIutTI0n+fx0EMHjFIselYwBwHhpSD6/ORtPPMXDY5MS6jiwO5QV7blSQRtA== integrity sha512-fncCq6Zu8s6GpeCrkmJS8/rqXcyrJ8p8EyWfXiiuZlWkgzOIi+qZjTRnO63wI6DomYwVOjwk7sry4RbOJSdK5Q==
levn@^0.4.1: levn@^0.4.1:
version "0.4.1" version "0.4.1"