aboutsummaryrefslogtreecommitdiff
path: root/src/classes/user.js
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.xyz>2022-12-04 18:05:11 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.xyz>2022-12-04 18:05:11 +0530
commitbb38d843de17bb0b206a663e008c5dbb37f04708 (patch)
tree3dd62fb8961d85a277fe5a882e8a41bc2c4d71dd /src/classes/user.js
parent9ca1864b79ede841e71836132effc2e260b4e758 (diff)
added (untested) auth mechanism
Diffstat (limited to 'src/classes/user.js')
-rw-r--r--src/classes/user.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/classes/user.js b/src/classes/user.js
new file mode 100644
index 0000000..858d8d6
--- /dev/null
+++ b/src/classes/user.js
@@ -0,0 +1,71 @@
+/* OpenBills-web - Web based libre billing software
+ * Copyright (C) 2022 Vidhu Kant Sharma <vidhukant@vidhukant.xyz>
+
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import axios from "axios";
+
+export class User {
+ constructor() {
+ this.Id = null;
+ this.UserName = "";
+ this.Email = "";
+ this.Password = "";
+ }
+}
+
+export const validateUsername = username => {
+ if (username.length < 2) return false;
+ // username can't have spaces
+ if (username.includes(" ")) return false;
+ return true
+}
+
+export const validatePassword = password => {
+ if (password.length < 12) return false;
+ // TODO: add other validation
+
+ return true;
+}
+
+export const validateEmail = email => String(email)
+ .toLowerCase()
+ .match(
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
+ ) ? true : false;
+
+export const login = (data, ok, fail) => {
+ axios.post("/auth/login", data)
+ .then(res => ok(res))
+ .catch(err => fail(err));
+}
+
+export const saveUser = (user, ok, fail) => {
+ axios.post("/user/new", user)
+ .then(res => ok(res))
+ .catch(err => fail(err));
+}
+
+export const deleteUser = (id, ok, fail) => {
+ axios.delete(`/user/${id}`)
+ .then(res => ok(res))
+ .catch(err => fail(err));
+}
+
+export const editUser = (user, ok, fail) => {
+ axios.put(`/user/${user.Id}`, user)
+ .then(res => ok(res))
+ .catch(err => fail(err));
+}