import React from "react" import ReactDOM from "react-dom" import misago from "misago/index" import Button from "misago/components/button" import Form from "misago/components/form" import SignInModal from "misago/components/sign-in.js" import ajax from "misago/services/ajax" import auth from "misago/services/auth" import modal from "misago/services/modal" import snackbar from "misago/services/snackbar" import showBannedPage from "misago/utils/banned-page" export class ResetPasswordForm extends Form { constructor(props) { super(props) this.state = { isLoading: false, password: "" } } clean() { if (this.state.password.trim().length) { return true } else { snackbar.error(gettext("Enter new password.")) return false } } send() { return ajax.post(misago.get("CHANGE_PASSWORD_API"), { password: this.state.password }) } handleSuccess(apiResponse) { this.props.callback(apiResponse) } handleError(rejection) { if (rejection.status === 403 && rejection.ban) { showBannedPage(rejection.ban) } else { snackbar.apiError(rejection) } } render() { return (
) } } export class PasswordChangedPage extends React.Component { getMessage() { return interpolate( gettext("%(username)s, your password has been changed successfully."), { username: this.props.user.username }, true ) } showSignIn() { modal.show(SignInModal) } render() { return (
check

{this.getMessage()}

{gettext( "You will have to sign in using new password before continuing." )}

) } } export default class extends React.Component { complete = apiResponse => { auth.softSignOut() // nuke "redirect_to" field so we don't end // coming back to error page after sign in $('#hidden-login-form input[name="redirect_to"]').remove() ReactDOM.render( , document.getElementById("page-mount") ) } render() { return } }