Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add user profile and change password form tags by jacksleight · Pull Request #6400 · statamic/cms · GitHub
Skip to content

Add user profile and change password form tags - #6400

Merged
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag
Dec 13, 2022
Merged

Add user profile and change password form tags#6400
jasonvarga merged 26 commits into
statamic:3.3from
jacksleight:update-user-tag

Conversation

@jacksleight

@jacksleightjacksleight commented Jul 29, 2022

Copy link
Copy Markdown
Contributor

Continuing with what @edalzell started in #6023, merging in what I've implemented in my addon.

This PR adds the following:

  • Adds a {{ user:profile_form }} tag that allows users to edit their information
    • Supports uploading assets in the profile form
  • Adds a {{ user:password_form }} tag that allows users to change their password
  • Adds support for uploading assets in the register form
  • Tests

Couple of notes:

  1. Profile Form Defaults
    I'm sure the way I've passed the default values from the user data to the profile form (including the change to getRenderableField) probably isn't the best way to do that, but I wasn't really sure how else to do it.
  2. Assets
    At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them. I'm not sure if that should be supported and if so how best to do it?
  3. Protected Fields
    In my addon I implemented the profile form with a list of fields that were allowed to be submitted, defined via a config option. I've not implemented that here as the registration form doesn't have that. But perhaps it would be a good idea, to stop people submitting values they shouldn't have the ability to change? Maybe a block list instead of an allow list?

Also the tests have to check for either validation.current_password or The password is incorrect. because there's no validation.current_password string when running prefer-lowest.

Closesstatamic/ideas#676.

@jacksleight
jacksleight marked this pull request as ready for review August 10, 2022 17:04
@edalzell

Copy link
Copy Markdown
Contributor

Great work on this Jack

@j3ll3yfi5h

Copy link
Copy Markdown
Contributor

Hi @jacksleight! Thanks for your work! Any ideas, what's missing or why it is still not merged?

@jacksleight

jacksleight commented Oct 15, 2022

Copy link
Copy Markdown
ContributorAuthor

Think they just haven’t got to it yet, sure it'll be reviewed in due course. It's a fairly big PR so might take some time.

@jasonvarga

Copy link
Copy Markdown
Member

This is really great, thank you.

But the asset fields are complicated. As it stands, if you have an avatar, and you submit the form, the avatar field gets wiped.

So while you said:

At the moment it's not possible for a user to remove assets from their accounts through the profile form, only replace them

It is possible... It just does it when you probably don't want it to.
There's actually no way to maintain the value.

For now, so this can get merged and used, I'm going to filter out asset fields.

We can figure out asset field handling in a separate PR.

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

I could be wrong (can't test it right now) but I think that's accounted for by these two bits:

request()->hasFile($field->handle())
->only(array_keys($values))

These should prevent blank files overwriting the existing values by filtering out the item from the collection if nothing has been uploaded.

Will do some testing to check though, I'm fairly sure that works OK in the addon (where most of this comes from).

@jasonvarga

Copy link
Copy Markdown
Member

It wiped it when trying here. That hasFile only happens in the uploadAssetFiles, but not normalizeAssetValues, so the null value still gets submitted.

There's also the issue of how to display the file when one already exists, how to let a user remove it, and what to do when you have other assets fields that may have max_files != 1.

@what-the-diff

what-the-diffBot commented Dec 1, 2022

Copy link
Copy Markdown
  • Added profile and password routes
  • Added user:profile_form, user:password_form tags
  • Updated UserController to handle the new forms (and added a few helper methods)
  • Removed asset fields from registration form values so they don't get validated as required when not present in request data
  • Added a new test file
  • Created tests for the user:password_form tag
  • Added a new test file
  • Created the class ProfileFormTest and added use statements for NormalizesHtml, PreventSavingStacheItemsToDisk, TestCase traits
  • Used trait to prevent saving stache items to disk in tests/PreventSavingStacheItemsToDisk.php
  • Wrote it_renders_form() method that asserts if form is rendered with correct attributes like action url etc.. using assertStringContainsString(), assertStringEndsWith() methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit)
  • Wrote it_renders_form_with params() method that asserts if form is rendered with redirect attribute value as /submitted and error-redirect attribute value as /errors using assertEquals($expectedRedirectUrl, $actualRedirectUrl),assertEquals($expectedErrorRedirectUrl ,$actualErrorRedirctURL) methods of PHPUnit\Framework\AssertionFailedError class which extends from Exception Class (PHPUnit). Also used Parse::template(string $content = '', array $data = []) static function provided by Statamic Facade to parse template tags within content string passed into this function

@jacksleight

Copy link
Copy Markdown
ContributorAuthor

Ah OK, must not have spotted that before, no worries. 👍 And yeah there are other issues to consider as well.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring back {{ member:profile_form }} from v2

4 participants

@jacksleight@edalzell@j3ll3yfi5h@jasonvarga