mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
861d077247 | ||
|
|
cc6a35e61d | ||
|
|
985b86c29a | ||
|
|
166bd31527 | ||
|
|
1a0a6c1806 | ||
|
|
023d9886c8 | ||
|
|
f51f0a0c93 | ||
|
|
83b2ba7688 | ||
|
|
d5ca5172d5 | ||
|
|
c677a1ffef | ||
|
|
6ef35c3f72 | ||
|
|
5759fb37d8 | ||
|
|
9f238abf93 | ||
|
|
9462e90f4f | ||
|
|
72539f9ba3 | ||
|
|
dabd466719 | ||
|
|
8bf2304330 | ||
|
|
6937dc4e4e | ||
|
|
2917955ef0 | ||
|
|
55d13e44d4 |
14
package-lock.json
generated
14
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"version": "5.42.1",
|
"version": "5.42.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"version": "5.42.1",
|
"version": "5.42.2",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.22.10",
|
"@babel/core": "^7.22.10",
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
"gulp-imagemin": "^7.1.0",
|
"gulp-imagemin": "^7.1.0",
|
||||||
"gulp.spritesmith": "^6.13.0",
|
"gulp.spritesmith": "^6.13.0",
|
||||||
"habitica-markdown": "^3.0.0",
|
"habitica-markdown": "^3.0.0",
|
||||||
"helmet": "^4.6.0",
|
"helmet": "^8.1.0",
|
||||||
"in-app-purchase": "^1.11.3",
|
"in-app-purchase": "^1.11.3",
|
||||||
"js2xmlparser": "^5.0.0",
|
"js2xmlparser": "^5.0.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
@@ -12450,11 +12450,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/helmet": {
|
"node_modules/helmet": {
|
||||||
"version": "4.6.0",
|
"version": "8.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz",
|
||||||
"integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==",
|
"integrity": "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hex2dec": {
|
"node_modules/hex2dec": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||||
"version": "5.42.1",
|
"version": "5.42.2",
|
||||||
"main": "./website/server/index.js",
|
"main": "./website/server/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.22.10",
|
"@babel/core": "^7.22.10",
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
"gulp-imagemin": "^7.1.0",
|
"gulp-imagemin": "^7.1.0",
|
||||||
"gulp.spritesmith": "^6.13.0",
|
"gulp.spritesmith": "^6.13.0",
|
||||||
"habitica-markdown": "^3.0.0",
|
"habitica-markdown": "^3.0.0",
|
||||||
"helmet": "^4.6.0",
|
"helmet": "^8.1.0",
|
||||||
"in-app-purchase": "^1.11.3",
|
"in-app-purchase": "^1.11.3",
|
||||||
"js2xmlparser": "^5.0.0",
|
"js2xmlparser": "^5.0.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
<div
|
<div
|
||||||
v-if="!group.purchased.plan.dateTerminated
|
v-if="!group.purchased.plan.dateTerminated
|
||||||
&& group.purchased.plan.paymentMethod === 'Stripe'"
|
&& group.purchased.plan.paymentMethod === 'Stripe'"
|
||||||
class="btn btn-primary"
|
class="btn btn-primary mb-3"
|
||||||
@click="redirectToStripeEdit({groupId: group.id})"
|
@click="redirectToStripeEdit({groupId: group.id})"
|
||||||
>
|
>
|
||||||
{{ $t('subUpdateCard') }}
|
{{ $t('subUpdateCard') }}
|
||||||
|
|||||||
@@ -491,6 +491,9 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
mapProfileLinksToModal () {
|
mapProfileLinksToModal () {
|
||||||
|
if (!this.$refs?.markdownContainer) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const links = this.$refs.markdownContainer.getElementsByTagName('a');
|
const links = this.$refs.markdownContainer.getElementsByTagName('a');
|
||||||
for (let i = 0; i < links.length; i += 1) {
|
for (let i = 0; i < links.length; i += 1) {
|
||||||
let link = links[i].pathname;
|
let link = links[i].pathname;
|
||||||
|
|||||||
@@ -189,6 +189,7 @@
|
|||||||
>
|
>
|
||||||
</p>
|
</p>
|
||||||
<div
|
<div
|
||||||
|
v-if="paymentMethodLogo.icon"
|
||||||
class="svg svg-icon mb-4"
|
class="svg svg-icon mb-4"
|
||||||
:class="paymentMethodLogo.class"
|
:class="paymentMethodLogo.class"
|
||||||
v-html="paymentMethodLogo.icon"
|
v-html="paymentMethodLogo.icon"
|
||||||
@@ -205,6 +206,13 @@
|
|||||||
<div>{{ $t('subUpdateCard') }}</div>
|
<div>{{ $t('subUpdateCard') }}</div>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
v-once
|
||||||
|
v-if="!hasGroupPlan"
|
||||||
|
class="small text-center mb-4"
|
||||||
|
>
|
||||||
|
{{ $t('subscriptionBillingFYIShort') }}
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="purchasedPlanExtraMonthsDetails.months > 0"
|
v-if="purchasedPlanExtraMonthsDetails.months > 0"
|
||||||
class="extra-months green-10 py-2 px-3 mb-4"
|
class="extra-months green-10 py-2 px-3 mb-4"
|
||||||
@@ -409,6 +417,7 @@
|
|||||||
<div class="d-flex flex-column align-items-center mt-3">
|
<div class="d-flex flex-column align-items-center mt-3">
|
||||||
<div
|
<div
|
||||||
v-once
|
v-once
|
||||||
|
v-if="!hasSubscription"
|
||||||
class="small gray-100 w-50 text-center mb-5"
|
class="small gray-100 w-50 text-center mb-5"
|
||||||
>
|
>
|
||||||
{{ $t('subscriptionBillingFYI') }}
|
{{ $t('subscriptionBillingFYI') }}
|
||||||
|
|||||||
@@ -273,5 +273,6 @@
|
|||||||
"earn2GemsGift": "They'll earn <strong>+2 Gems</strong> every month they're subscribed",
|
"earn2GemsGift": "They'll earn <strong>+2 Gems</strong> every month they're subscribed",
|
||||||
"maxGemCapGift": "They'll have the max <strong>Gem Cap</strong>",
|
"maxGemCapGift": "They'll have the max <strong>Gem Cap</strong>",
|
||||||
"subscribeAgainContinueHourglasses": "Subscribe again to continue receiving Mystic Hourglasses",
|
"subscribeAgainContinueHourglasses": "Subscribe again to continue receiving Mystic Hourglasses",
|
||||||
"subscriptionBillingFYI": "Subscriptions automatically renew unless you cancel at least 24 hours before the end of the current period. You can manage your subscription from the Subscription tab in settings. Your account will be charged within 24 hours of your renewal date, at the same price you initially paid."
|
"subscriptionBillingFYI": "Subscriptions automatically renew unless you cancel at least 24 hours before the end of the current period. You can manage your subscription from the Subscription tab in settings. Your account will be charged within 24 hours of your renewal date, at the same price you initially paid.",
|
||||||
|
"subscriptionBillingFYIShort": "Subscriptions automatically renew unless you cancel at least 24 hours before the end of the current period. Your account will be charged within 24 hours of your renewal date, at the same price you initially paid."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,8 +109,8 @@ export const REPEATING_EVENTS = {
|
|||||||
foodSeason: 'Pie',
|
foodSeason: 'Pie',
|
||||||
},
|
},
|
||||||
giftOneGetOne: {
|
giftOneGetOne: {
|
||||||
start: new Date('1970-12-18T04:00-05:00'),
|
start: new Date('1970-12-16T04:00-05:00'),
|
||||||
end: new Date('1970-01-05T23:59-05:00'),
|
end: new Date('1970-01-09T23:59-05:00'),
|
||||||
promo: 'g1g1',
|
promo: 'g1g1',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -66,7 +66,35 @@ export default function attachMiddlewares (app, server) {
|
|||||||
// See https://helmetjs.github.io/ for the list of headers enabled by default
|
// See https://helmetjs.github.io/ for the list of headers enabled by default
|
||||||
app.use(helmet({
|
app.use(helmet({
|
||||||
// New middlewares added by default in Helmet 4 are disabled
|
// New middlewares added by default in Helmet 4 are disabled
|
||||||
contentSecurityPolicy: false, // @TODO implement
|
contentSecurityPolicy: {
|
||||||
|
directives: {
|
||||||
|
defaultSrc: [
|
||||||
|
'*.habitica.com',
|
||||||
|
'*.amazon.com',
|
||||||
|
'*.amazonaws.com',
|
||||||
|
'*.loggly.com',
|
||||||
|
'*.payments-amazon.com',
|
||||||
|
'*.stripe.com',
|
||||||
|
'*.stripe.network',
|
||||||
|
],
|
||||||
|
imgSrc: [
|
||||||
|
'*',
|
||||||
|
'data:',
|
||||||
|
],
|
||||||
|
scriptSrc: [
|
||||||
|
'\'unsafe-eval\'',
|
||||||
|
'\'unsafe-inline\'',
|
||||||
|
'*.habitica.com',
|
||||||
|
'*.amazon.com',
|
||||||
|
'*.amazonaws.com',
|
||||||
|
'*.loggly.com',
|
||||||
|
'*.payments-amazon.com',
|
||||||
|
'*.stripe.com',
|
||||||
|
'*.stripe.network',
|
||||||
|
],
|
||||||
|
upgradeInsecureRequests: IS_PROD ? [] : null,
|
||||||
|
},
|
||||||
|
},
|
||||||
expectCt: false,
|
expectCt: false,
|
||||||
permittedCrossDomainPolicies: false,
|
permittedCrossDomainPolicies: false,
|
||||||
referrerPolicy: false,
|
referrerPolicy: false,
|
||||||
|
|||||||
Reference in New Issue
Block a user