diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/util/SettingsManager.scss | 9 | ||||
-rw-r--r-- | src/client/util/SettingsManager.tsx | 49 | ||||
-rw-r--r-- | src/server/ApiManagers/DeleteManager.ts | 17 | ||||
-rw-r--r-- | src/server/ApiManagers/UserManager.ts | 12 |
4 files changed, 70 insertions, 17 deletions
diff --git a/src/client/util/SettingsManager.scss b/src/client/util/SettingsManager.scss index 228625182..5839fa748 100644 --- a/src/client/util/SettingsManager.scss +++ b/src/client/util/SettingsManager.scss @@ -47,6 +47,7 @@ display: flex; flex-direction: column; justify-content: space-between; + text-align: left; button { background: $darker-alt-accent; @@ -55,6 +56,14 @@ input { min-width: 100%; } + + .error-text { + color: #C40233; + } + + .success-text { + color: #009F6B; + } } } diff --git a/src/client/util/SettingsManager.tsx b/src/client/util/SettingsManager.tsx index 0fcb80a3f..e475cac1f 100644 --- a/src/client/util/SettingsManager.tsx +++ b/src/client/util/SettingsManager.tsx @@ -17,6 +17,9 @@ export default class SettingsManager extends React.Component<{}> { @observable private isOpen = false; @observable private dialogueBoxOpacity = 1; @observable private overlayOpacity = 0.4; + @observable private settingsContent = "settings"; + @observable private errorText = ""; + @observable private successText = ""; private curr_password_ref = React.createRef<HTMLInputElement>(); private new_password_ref = React.createRef<HTMLInputElement>(); private new_confirm_ref = React.createRef<HTMLInputElement>(); @@ -35,13 +38,15 @@ export default class SettingsManager extends React.Component<{}> { SettingsManager.Instance = this; } + @action private dispatchRequest = async () => { const curr_pass = this.curr_password_ref.current?.value; const new_pass = this.new_password_ref.current?.value; const new_confirm = this.new_confirm_ref.current?.value; if (!(curr_pass && new_pass && new_confirm)) { - alert("Hey we're missing some fields!"); + this.changeAlertText("Hey, we're missing some fields!", ""); + // alert("Hey we're missing some fields!"); return; } @@ -50,17 +55,31 @@ export default class SettingsManager extends React.Component<{}> { new_pass, new_confirm }; - const { error } = await Networking.PostToServer('/internalResetPassword', passwordBundle); + + const res = await Networking.PostToServer('/internalResetPassword', passwordBundle); + const error = res.error; + console.log(res, "is res"); if (error) { - alert("Uh oh! " + error); + console.log(error, error[0].msg); + this.changeAlertText("Uh oh! " + error[0].msg + "...", ""); + // alert("Uh oh! " + error.msg); return; } - alert("Password successfully updated!"); + this.changeAlertText("", "Password successfully updated!"); + console.log('success!'); + // alert("Password successfully updated!"); + } + + @action + private changeAlertText = (errortxt: string, successtxt: string) => { + this.errorText = errortxt; + this.successText = successtxt; } + @action onClick = (event: any) => { - console.log(event); + this.settingsContent = event.currentTarget.value; } private get settingsInterface() { @@ -77,13 +96,19 @@ export default class SettingsManager extends React.Component<{}> { <button onClick={this.onClick} value="settings">settings</button> <button onClick={this.onClick} value="data">data</button> </div> - <div className="settings-content"> - <input placeholder="current password" ref={this.curr_password_ref} /> - <input placeholder="new password" ref={this.new_password_ref} /> - <input placeholder="confirm new password" ref={this.new_confirm_ref} /> - <button onClick={this.dispatchRequest}>submit</button> - this changes with what you select! - </div> + {this.settingsContent === "settings" ? + <div className="settings-content"> + change password here: + <input placeholder="current password" ref={this.curr_password_ref} /> + <input placeholder="new password" ref={this.new_password_ref} /> + <input placeholder="confirm new password" ref={this.new_confirm_ref} /> + {this.errorText ? <div className="error-text">{this.errorText}</div> : undefined} + {this.successText ? <div className="success-text">{this.successText}</div> : undefined} + <button onClick={this.dispatchRequest}>submit</button> + + </div> + : + <div className="settings-content">hello?</div>} </div> </div> diff --git a/src/server/ApiManagers/DeleteManager.ts b/src/server/ApiManagers/DeleteManager.ts index 71818c673..1fdc7cc36 100644 --- a/src/server/ApiManagers/DeleteManager.ts +++ b/src/server/ApiManagers/DeleteManager.ts @@ -1,5 +1,5 @@ import ApiManager, { Registration } from "./ApiManager"; -import { Method, _permission_denied } from "../RouteManager"; +import { Method, _permission_denied, OnUnauthenticated } from "../RouteManager"; import { WebSocket } from "../Websocket/Websocket"; import { Database } from "../database"; @@ -31,6 +31,21 @@ export default class DeleteManager extends ApiManager { } }); + const hi: OnUnauthenticated = async ({ res, isRelease }) => { + if (isRelease) { + return _permission_denied(res, deletionPermissionError); + } + await Database.Instance.deleteAll('users'); + res.redirect("/home"); + }; + + // register({ + // method: Method.GET, + // subscription: "/deleteUsers", + // onValidation: hi, + // onUnauthenticated: hi + // }); + register({ method: Method.GET, diff --git a/src/server/ApiManagers/UserManager.ts b/src/server/ApiManagers/UserManager.ts index 7e8ceb189..3ae2a5d30 100644 --- a/src/server/ApiManagers/UserManager.ts +++ b/src/server/ApiManagers/UserManager.ts @@ -47,8 +47,8 @@ export default class UserManager extends ApiManager { // perhaps should assert whether curr password is entered correctly const validated = await new Promise<Opt<boolean>>(resolve => { bcrypt.compare(curr_pass, user.password, (err, passwords_match) => { - if (err) { - result.error = "Incorrect current password"; + if (err || !passwords_match) { + result.error = [{ msg: "Incorrect current password" }]; res.send(result); resolve(undefined); } else { @@ -61,9 +61,13 @@ export default class UserManager extends ApiManager { return; } - req.assert("new_pass", "Password must be at least 4 characters long").len({ min: 4 }); + // req.assert("new_pass", "Password must be at least 4 characters long").len({ min: 4 }); req.assert("new_confirm", "Passwords do not match").equals(new_pass); + if (req.assert("new_pass", "Password must be at least 4 characters long").len({ min: 4 })) { + result.inch = "interesting"; + } + // was there error in validating new passwords? if (req.validationErrors()) { // was there error? @@ -76,7 +80,7 @@ export default class UserManager extends ApiManager { user.save(err => { if (err) { - result.error = "saving"; + result.error = [{ msg: "Error while saving new password" }]; } }); |