mirror of
https://github.com/LBRYFoundation/lbry-desktop.git
synced 2025-08-23 17:47:24 +00:00
Add password reset link to settings page (4468)
This commit is contained in:
parent
ad0d96328b
commit
e5c4246e15
4 changed files with 50 additions and 27 deletions
|
@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Option to remove abandoned claims from Blocked Channels page _community pr!_ ([#4433](https://github.com/lbryio/lbry-desktop/pull/4433))
|
- Option to remove abandoned claims from Blocked Channels page _community pr!_ ([#4433](https://github.com/lbryio/lbry-desktop/pull/4433))
|
||||||
- New channel create/edit page ([#4445](https://github.com/lbryio/lbry-desktop/pull/4445))
|
- New channel create/edit page ([#4445](https://github.com/lbryio/lbry-desktop/pull/4445))
|
||||||
- Add dialog to copy various types of links for a claim _community pr!_ ([#4474](https://github.com/lbryio/lbry-desktop/pull/4474))
|
- Add dialog to copy various types of links for a claim _community pr!_ ([#4474](https://github.com/lbryio/lbry-desktop/pull/4474))
|
||||||
|
- Add password reset link to settings page for logged in users _community pr!_ ([#4473](https://github.com/lbryio/lbry-desktop/pull/4473))
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
|
@ -1252,6 +1252,10 @@
|
||||||
"Old Password": "Old Password",
|
"Old Password": "Old Password",
|
||||||
"New Password": "New Password",
|
"New Password": "New Password",
|
||||||
"Set Password": "Set Password",
|
"Set Password": "Set Password",
|
||||||
|
"Reset Your Password": "Reset Your Password",
|
||||||
|
"Reset Password": "Reset Password",
|
||||||
|
"Check your email for a link to reset your password.": "Check your email for a link to reset your password.",
|
||||||
|
"Email sent!": "Email sent!",
|
||||||
"App Notifications": "App Notifications",
|
"App Notifications": "App Notifications",
|
||||||
"Notification settings for the desktop app.": "Notification settings for the desktop app.",
|
"Notification settings for the desktop app.": "Notification settings for the desktop app.",
|
||||||
"Get notified when a publish or channel is confirmed.": "Get notified when a publish or channel is confirmed.",
|
"Get notified when a publish or channel is confirmed.": "Get notified when a publish or channel is confirmed.",
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { FormField, Form } from 'component/common/form';
|
||||||
import Button from 'component/button';
|
import Button from 'component/button';
|
||||||
import ErrorText from 'component/common/error-text';
|
import ErrorText from 'component/common/error-text';
|
||||||
import Card from 'component/common/card';
|
import Card from 'component/common/card';
|
||||||
|
import UserPasswordReset from 'component/userPasswordReset';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
user: ?User,
|
user: ?User,
|
||||||
|
@ -19,6 +20,7 @@ export default function SettingAccountPassword(props: Props) {
|
||||||
const [oldPassword, setOldPassword] = useState('');
|
const [oldPassword, setOldPassword] = useState('');
|
||||||
const [newPassword, setNewPassword] = useState('');
|
const [newPassword, setNewPassword] = useState('');
|
||||||
const [isAddingPassword, setIsAddingPassword] = useState(false);
|
const [isAddingPassword, setIsAddingPassword] = useState(false);
|
||||||
|
const [forgotPassword, setForgotPassword] = useState(false);
|
||||||
const hasPassword = user && user.password_set;
|
const hasPassword = user && user.password_set;
|
||||||
|
|
||||||
function handleSubmit() {
|
function handleSubmit() {
|
||||||
|
@ -44,34 +46,43 @@ export default function SettingAccountPassword(props: Props) {
|
||||||
actions={
|
actions={
|
||||||
isAddingPassword ? (
|
isAddingPassword ? (
|
||||||
<div>
|
<div>
|
||||||
<Form onSubmit={handleSubmit} className="section">
|
{forgotPassword ? (
|
||||||
{hasPassword && (
|
|
||||||
<FormField
|
|
||||||
type="password"
|
|
||||||
name="setting_set_old_password"
|
|
||||||
label={__('Old Password')}
|
|
||||||
value={oldPassword}
|
|
||||||
onChange={e => setOldPassword(e.target.value)}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
<FormField
|
|
||||||
type="password"
|
|
||||||
name="setting_set_new_password"
|
|
||||||
label={__('New Password')}
|
|
||||||
value={newPassword}
|
|
||||||
onChange={e => setNewPassword(e.target.value)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div className="section__actions">
|
<div className="section__actions">
|
||||||
<Button button="primary" type="submit" label={__('Set Password')} disabled={!newPassword} />
|
<UserPasswordReset onCancel={() => setForgotPassword(false)} />
|
||||||
{!hasPassword && (
|
|
||||||
<Button button="link" label={__('Cancel')} onClick={() => setIsAddingPassword(false)} />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
) : (
|
||||||
{passwordSetError && (
|
<div>
|
||||||
<div className="section">
|
<Form onSubmit={handleSubmit} className="section">
|
||||||
<ErrorText>{passwordSetError}</ErrorText>
|
{hasPassword && (
|
||||||
|
<FormField
|
||||||
|
type="password"
|
||||||
|
name="setting_set_old_password"
|
||||||
|
label={__('Old Password')}
|
||||||
|
value={oldPassword}
|
||||||
|
onChange={e => setOldPassword(e.target.value)}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<FormField
|
||||||
|
type="password"
|
||||||
|
name="setting_set_new_password"
|
||||||
|
label={__('New Password')}
|
||||||
|
value={newPassword}
|
||||||
|
onChange={e => setNewPassword(e.target.value)}
|
||||||
|
/>
|
||||||
|
<div className="section__actions">
|
||||||
|
<Button button="primary" type="submit" label={__('Set Password')} disabled={!newPassword} />
|
||||||
|
{hasPassword ? (
|
||||||
|
<Button button="link" label={__('Forgot Password?')} onClick={() => setForgotPassword(true)} />
|
||||||
|
) : (
|
||||||
|
<Button button="link" label={__('Cancel')} onClick={() => setIsAddingPassword(false)} />
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
{passwordSetError && (
|
||||||
|
<div className="section">
|
||||||
|
<ErrorText>{passwordSetError}</ErrorText>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,6 +20,7 @@ type Props = {
|
||||||
passwordResetSuccess: boolean,
|
passwordResetSuccess: boolean,
|
||||||
passwordResetError: ?string,
|
passwordResetError: ?string,
|
||||||
emailToVerify: ?string,
|
emailToVerify: ?string,
|
||||||
|
onCancel?: () => void,
|
||||||
};
|
};
|
||||||
|
|
||||||
function UserPasswordReset(props: Props) {
|
function UserPasswordReset(props: Props) {
|
||||||
|
@ -32,6 +33,7 @@ function UserPasswordReset(props: Props) {
|
||||||
doClearPasswordEntry,
|
doClearPasswordEntry,
|
||||||
doClearEmailEntry,
|
doClearEmailEntry,
|
||||||
emailToVerify,
|
emailToVerify,
|
||||||
|
onCancel,
|
||||||
} = props;
|
} = props;
|
||||||
const { push } = useHistory();
|
const { push } = useHistory();
|
||||||
const [email, setEmail] = React.useState(emailToVerify || '');
|
const [email, setEmail] = React.useState(emailToVerify || '');
|
||||||
|
@ -47,7 +49,12 @@ function UserPasswordReset(props: Props) {
|
||||||
setEmail('');
|
setEmail('');
|
||||||
doClearPasswordEntry();
|
doClearPasswordEntry();
|
||||||
doClearEmailEntry();
|
doClearEmailEntry();
|
||||||
push(`/$/${PAGES.AUTH_SIGNIN}`);
|
|
||||||
|
if (onCancel) {
|
||||||
|
onCancel();
|
||||||
|
} else {
|
||||||
|
push(`/$/${PAGES.AUTH_SIGNIN}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue