aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/util/SettingsManager.scss9
-rw-r--r--src/client/util/SettingsManager.tsx49
-rw-r--r--src/server/ApiManagers/DeleteManager.ts17
-rw-r--r--src/server/ApiManagers/UserManager.ts12
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" }];
}
});