summaryrefslogtreecommitdiff
path: root/packages/client/src/components
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-05-15 12:18:46 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-05-15 12:18:46 +0900
commitb21b0580058c14532ff3f4033e2a9147643bfca6 (patch)
tree97e59def285f61fc6bf50e01df7eb9edc010dc31 /packages/client/src/components
parentfix(server): prevent crash when processing certain PNGs (diff)
downloadsharkey-b21b0580058c14532ff3f4033e2a9147643bfca6.tar.gz
sharkey-b21b0580058c14532ff3f4033e2a9147643bfca6.tar.bz2
sharkey-b21b0580058c14532ff3f4033e2a9147643bfca6.zip
feat: make captcha required when signin to improve security
Diffstat (limited to 'packages/client/src/components')
-rw-r--r--packages/client/src/components/signin.vue17
-rw-r--r--packages/client/src/components/signup.vue6
2 files changed, 17 insertions, 6 deletions
diff --git a/packages/client/src/components/signin.vue b/packages/client/src/components/signin.vue
index bdf247a56f..4f88e1829c 100644
--- a/packages/client/src/components/signin.vue
+++ b/packages/client/src/components/signin.vue
@@ -33,6 +33,8 @@
<template #label>{{ $ts.token }}</template>
<template #prefix><i class="fas fa-gavel"></i></template>
</MkInput>
+ <MkCaptcha v-if="meta.enableHcaptcha" ref="hcaptcha" v-model="hCaptchaResponse" class="_formBlock captcha" provider="hcaptcha" :sitekey="meta.hcaptchaSiteKey"/>
+ <MkCaptcha v-if="meta.enableRecaptcha" ref="recaptcha" v-model="reCaptchaResponse" class="_formBlock captcha" provider="recaptcha" :sitekey="meta.recaptchaSiteKey"/>
<MkButton type="submit" :disabled="signing" primary style="margin: 0 auto;">{{ signing ? $ts.loggingIn : $ts.login }}</MkButton>
</div>
</div>
@@ -60,6 +62,7 @@ export default defineComponent({
components: {
MkButton,
MkInput,
+ MkCaptcha: defineAsyncComponent(() => import('./captcha.vue')),
},
props: {
@@ -90,6 +93,8 @@ export default defineComponent({
credential: null,
challengeData: null,
queryingKey: false,
+ hCaptchaResponse: null,
+ reCaptchaResponse: null,
};
},
@@ -139,11 +144,13 @@ export default defineComponent({
return os.api('signin', {
username: this.username,
password: this.password,
+ 'hcaptcha-response': this.hCaptchaResponse,
+ 'g-recaptcha-response': this.reCaptchaResponse,
signature: hexify(credential.response.signature),
authenticatorData: hexify(credential.response.authenticatorData),
clientDataJSON: hexify(credential.response.clientDataJSON),
credentialId: credential.id,
- challengeId: this.challengeData.challengeId
+ challengeId: this.challengeData.challengeId,
});
}).then(res => {
this.$emit('login', res);
@@ -164,7 +171,9 @@ export default defineComponent({
if (window.PublicKeyCredential && this.user.securityKeys) {
os.api('signin', {
username: this.username,
- password: this.password
+ password: this.password,
+ 'hcaptcha-response': this.hCaptchaResponse,
+ 'g-recaptcha-response': this.reCaptchaResponse,
}).then(res => {
this.totpLogin = true;
this.signing = false;
@@ -179,7 +188,9 @@ export default defineComponent({
os.api('signin', {
username: this.username,
password: this.password,
- token: this.user && this.user.twoFactorEnabled ? this.token : undefined
+ 'hcaptcha-response': this.hCaptchaResponse,
+ 'g-recaptcha-response': this.reCaptchaResponse,
+ token: this.user && this.user.twoFactorEnabled ? this.token : undefined,
}).then(res => {
this.$emit('login', res);
this.onLogin(res);
diff --git a/packages/client/src/components/signup.vue b/packages/client/src/components/signup.vue
index 62f370ffa8..aeed0e53fa 100644
--- a/packages/client/src/components/signup.vue
+++ b/packages/client/src/components/signup.vue
@@ -58,8 +58,8 @@
</template>
</I18n>
</MkSwitch>
- <captcha v-if="meta.enableHcaptcha" ref="hcaptcha" v-model="hCaptchaResponse" class="_formBlock captcha" provider="hcaptcha" :sitekey="meta.hcaptchaSiteKey"/>
- <captcha v-if="meta.enableRecaptcha" ref="recaptcha" v-model="reCaptchaResponse" class="_formBlock captcha" provider="recaptcha" :sitekey="meta.recaptchaSiteKey"/>
+ <MkCaptcha v-if="meta.enableHcaptcha" ref="hcaptcha" v-model="hCaptchaResponse" class="_formBlock captcha" provider="hcaptcha" :sitekey="meta.hcaptchaSiteKey"/>
+ <MkCaptcha v-if="meta.enableRecaptcha" ref="recaptcha" v-model="reCaptchaResponse" class="_formBlock captcha" provider="recaptcha" :sitekey="meta.recaptchaSiteKey"/>
<MkButton class="_formBlock" type="submit" :disabled="shouldDisableSubmitting" gradate data-cy-signup-submit>{{ $ts.start }}</MkButton>
</template>
</form>
@@ -81,7 +81,7 @@ export default defineComponent({
MkButton,
MkInput,
MkSwitch,
- captcha: defineAsyncComponent(() => import('./captcha.vue')),
+ MkCaptcha: defineAsyncComponent(() => import('./captcha.vue')),
},
props: {