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",
"import-sort-style-module": "^6.0.0",
"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",
"mini-css-extract-plugin": "^2.3.0",
"node-fetch": "^2.6.1",

View file

@ -364,3 +364,7 @@ br.big {
.tribute-container .menu-highlighted {
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 { T } from "inferno-i18next-dess";
import {
@ -10,7 +12,6 @@ import {
} from "lemmy-js-client";
import { Subscription } from "rxjs";
import { i18n } from "../../i18next";
import { Options, passwordStrength } from "check-password-strength";
import { UserService, WebSocketService } from "../../services";
import {
authField,
@ -26,7 +27,6 @@ import {
} from "../../utils";
import { HtmlTags } from "../common/html-tags";
import { Icon, Spinner } from "../common/icon";
import {I18nKeys} from "i18next";
const passwordStrengthOptions: Options<string> = [
{
@ -76,6 +76,7 @@ export class Signup extends Component<any, State> {
show_nsfw: false,
captcha_uuid: undefined,
captcha_answer: undefined,
honeypot: undefined,
},
registerLoading: false,
captcha: undefined,
@ -272,6 +273,16 @@ export class Signup extends Component<any, State> {
</T>
</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="col-sm-10">
<button type="submit" class="btn btn-secondary">
@ -371,6 +382,11 @@ export class Signup extends Component<any, State> {
i.setState(i.state);
}
handleHoneyPotChange(i: Signup, event: any) {
i.state.registerForm.honeypot = event.target.value;
i.setState(i.state);
}
handleRegenCaptcha(i: Signup) {
i.audio = null;
i.state.captchaPlaying = false;

View file

@ -326,6 +326,16 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
</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="col-sm-10">
<button
@ -466,6 +476,11 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
i.setState(i.state);
}
handleHoneyPotChange(i: PostForm, event: any) {
i.state.postForm.honeypot = event.target.value;
i.setState(i.state);
}
handleCancel(i: PostForm) {
i.props.onCancel();
}

View file

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