mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,3 +1,18 @@
|
||||
#### v3.0.1 (2023-05-02)
|
||||
|
||||
##### Chores
|
||||
|
||||
* incrementing version number - v3.0.0 (224e08cd)
|
||||
* update changelog for v3.0.0 (56ad381f)
|
||||
|
||||
##### Bug Fixes
|
||||
|
||||
* #11554, email requirement bypass by sending in whitespace (2b8dd3d2)
|
||||
* update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5)
|
||||
* #11545, wrong message shown to new users re: email confirmation (2b70063e)
|
||||
* black on red coloration on error when a bad reset code is received (604a8f7e)
|
||||
* use query param sort over user setting if it's set (9484ddc3)
|
||||
|
||||
#### v3.0.0 (2023-04-26)
|
||||
|
||||
##### Breaking Changes
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.1",
|
||||
"homepage": "https://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -11,6 +11,17 @@ put:
|
||||
required: true
|
||||
description: a valid topic id
|
||||
example: 1
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
expiry:
|
||||
type: number
|
||||
description: A UNIX timestamp representing the moment the topic will be unpinned.
|
||||
example: 1585337827953
|
||||
responses:
|
||||
'200':
|
||||
description: Topic successfully pinned
|
||||
|
||||
@@ -27,7 +27,7 @@ define('messages', ['bootbox', 'translator', 'storage', 'alerts', 'hooks'], func
|
||||
},
|
||||
};
|
||||
|
||||
if (!app.user.email) {
|
||||
if (!app.user.email && !app.user.isEmailConfirmSent) {
|
||||
msg.message = '[[error:no-email-to-confirm]]';
|
||||
msg.clickfn = function () {
|
||||
alerts.remove('email_confirm');
|
||||
|
||||
@@ -48,6 +48,10 @@ Interstitials.email = async (data) => {
|
||||
hasPending,
|
||||
},
|
||||
callback: async (userData, formData) => {
|
||||
if (formData.email) {
|
||||
formData.email = String(formData.email).trim();
|
||||
}
|
||||
|
||||
// Validate and send email confirmation
|
||||
if (userData.uid) {
|
||||
const isSelf = parseInt(userData.uid, 10) === parseInt(data.req.uid, 10);
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
</form>
|
||||
</div>
|
||||
{{{ else }}}
|
||||
<div class="card bg-danger">
|
||||
<div class="card text-bg-danger">
|
||||
<h5 class="card-header">
|
||||
[[reset_password:wrong_reset_code.title]]
|
||||
</h5>
|
||||
|
||||
@@ -448,7 +448,10 @@ describe('API', async () => {
|
||||
|
||||
let body = {};
|
||||
let type = 'json';
|
||||
if (context[method].hasOwnProperty('requestBody') && context[method].requestBody.content['application/json']) {
|
||||
if (
|
||||
context[method].hasOwnProperty('requestBody') &&
|
||||
context[method].requestBody.required !== false &&
|
||||
context[method].requestBody.content['application/json']) {
|
||||
body = buildBody(context[method].requestBody.content['application/json'].schema.properties);
|
||||
} else if (context[method].hasOwnProperty('requestBody') && context[method].requestBody.content['multipart/form-data']) {
|
||||
type = 'form';
|
||||
|
||||
Reference in New Issue
Block a user