diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..83d33b5
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uranium.iml b/.idea/uranium.iml
new file mode 100644
index 0000000..fbe7d63
--- /dev/null
+++ b/.idea/uranium.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..8f85844
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Cargo.toml b/Cargo.toml
index fc3c458..f5914c7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -10,11 +10,11 @@ version = {workspace = true}
[[bin]] # rename built binary to uranium
name = "uranium"
-path = "src/main.rs"
+path = "app/src/main.rs"
[workspace]
exclude = ["sandbox"]
-members = [".", "app", "entity", "migration", "mailer"]
+members = [".", "app", "entity", "migration", "mailer", "cli"]
[dependencies]
app = {path = "app"}
@@ -30,7 +30,7 @@ tonic-build = "0.9.2"
[workspace.package]
authors = ["Adeoye Adefemi "]
-description = "An Authentication, Authorization and Identity Management system for microservices"
+description = "Free deployable open source central authorization system"
documentation = "https://opeolluwa.github.io/uranium"
edition = "2021"
homepge = "https://opeolluwa.github.io/uranium"
@@ -39,6 +39,7 @@ exclude = ["docs"]
license-file = "./LICENSE"
name = "uranium"
version = "0.1.3"
+
[workspace.dependencies]
prost = "0.11.9"
tokio = {version = "1.20.1", features = ["full"]}
diff --git a/app-old/Cargo.toml b/app-old/Cargo.toml
new file mode 100644
index 0000000..5e38c0a
--- /dev/null
+++ b/app-old/Cargo.toml
@@ -0,0 +1,36 @@
+[package]
+edition = "2021"
+name = "app"
+version = "0.1.0"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+async-trait = "0.1.73"
+axum = {version = "0.6.20", features = ["json"]}
+bcrypt = "0.15.0"
+chrono = "0.4.26"
+dotenv = "0.15.0"
+dotenvy = "0.15.7"
+entity = {path = "../entity"}
+error = "0.1.9"
+fake = "2.6.1"
+futures = "0.3.28"
+http-body = "0.4.5"
+jsonwebtoken = "8.3.0"
+log = "0.4.19"
+migration = {path = "../migration"}
+sea-orm = {version = "0.12.2", features = ["macros", "debug-print", "with-uuid", "sqlx-postgres", "runtime-tokio-rustls"]}
+serde = "1.0.181"
+serde_json = "1.0.104"
+simple_logger = "4.2.0"
+this = "0.3.0"
+thiserror = "1.0.44"
+tokio = {version = "1.29.1", features = ["full"]}
+tower-http = {version = "0.4.3", features = ["cors", "trace"]}
+tracing = "0.1.37"
+tracing-subscriber = {version = "0.3.17", features = ["env-filter"]}
+uuid = "1.4.1"
+validator = {version = "0.16.1", features = ["derive"]}
+prost = {workspace = true}
+tonic = {workspace = true}
diff --git a/app/README.md b/app-old/README.md
similarity index 100%
rename from app/README.md
rename to app-old/README.md
diff --git a/app/src/common/mod.rs b/app-old/src/common/mod.rs
similarity index 100%
rename from app/src/common/mod.rs
rename to app-old/src/common/mod.rs
diff --git a/app/src/common/uranium.rs b/app-old/src/common/uranium.rs
similarity index 100%
rename from app/src/common/uranium.rs
rename to app-old/src/common/uranium.rs
diff --git a/app/src/config/app_state.rs b/app-old/src/config/app_state.rs
similarity index 100%
rename from app/src/config/app_state.rs
rename to app-old/src/config/app_state.rs
diff --git a/app/src/config/database.rs b/app-old/src/config/database.rs
similarity index 100%
rename from app/src/config/database.rs
rename to app-old/src/config/database.rs
diff --git a/app/src/config/mod.rs b/app-old/src/config/mod.rs
similarity index 100%
rename from app/src/config/mod.rs
rename to app-old/src/config/mod.rs
diff --git a/app/src/extractors/auth.rs b/app-old/src/extractors/auth.rs
similarity index 100%
rename from app/src/extractors/auth.rs
rename to app-old/src/extractors/auth.rs
diff --git a/app/src/extractors/mod.rs b/app-old/src/extractors/mod.rs
similarity index 100%
rename from app/src/extractors/mod.rs
rename to app-old/src/extractors/mod.rs
diff --git a/app/src/extractors/user.rs b/app-old/src/extractors/user.rs
similarity index 100%
rename from app/src/extractors/user.rs
rename to app-old/src/extractors/user.rs
diff --git a/app/src/handlers/auth.rs b/app-old/src/handlers/auth.rs
similarity index 100%
rename from app/src/handlers/auth.rs
rename to app-old/src/handlers/auth.rs
diff --git a/app/src/handlers/mod.rs b/app-old/src/handlers/mod.rs
similarity index 100%
rename from app/src/handlers/mod.rs
rename to app-old/src/handlers/mod.rs
diff --git a/app/src/handlers/users.rs b/app-old/src/handlers/users.rs
similarity index 100%
rename from app/src/handlers/users.rs
rename to app-old/src/handlers/users.rs
diff --git a/app/src/lib.rs b/app-old/src/lib.rs
similarity index 100%
rename from app/src/lib.rs
rename to app-old/src/lib.rs
diff --git a/app/src/router/auth.rs b/app-old/src/router/auth.rs
similarity index 100%
rename from app/src/router/auth.rs
rename to app-old/src/router/auth.rs
diff --git a/app/src/router/mod.rs b/app-old/src/router/mod.rs
similarity index 100%
rename from app/src/router/mod.rs
rename to app-old/src/router/mod.rs
diff --git a/app/src/router/users.rs b/app-old/src/router/users.rs
similarity index 100%
rename from app/src/router/users.rs
rename to app-old/src/router/users.rs
diff --git a/app/src/utils/api_response.rs b/app-old/src/utils/api_response.rs
similarity index 100%
rename from app/src/utils/api_response.rs
rename to app-old/src/utils/api_response.rs
diff --git a/app/src/utils/jwt.rs b/app-old/src/utils/jwt.rs
similarity index 100%
rename from app/src/utils/jwt.rs
rename to app-old/src/utils/jwt.rs
diff --git a/app/src/utils/message_queue.rs b/app-old/src/utils/message_queue.rs
similarity index 100%
rename from app/src/utils/message_queue.rs
rename to app-old/src/utils/message_queue.rs
diff --git a/app/src/utils/mod.rs b/app-old/src/utils/mod.rs
similarity index 100%
rename from app/src/utils/mod.rs
rename to app-old/src/utils/mod.rs
diff --git a/app/src/utils/otp_handler.rs b/app-old/src/utils/otp_handler.rs
similarity index 100%
rename from app/src/utils/otp_handler.rs
rename to app-old/src/utils/otp_handler.rs
diff --git a/app/src/utils/sql_query_builder.rs b/app-old/src/utils/sql_query_builder.rs
similarity index 100%
rename from app/src/utils/sql_query_builder.rs
rename to app-old/src/utils/sql_query_builder.rs
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..6985cf1
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1,14 @@
+# Generated by Cargo
+# will have compiled files and executables
+debug/
+target/
+
+# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
+# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
+Cargo.lock
+
+# These are backup files generated by rustfmt
+**/*.rs.bk
+
+# MSVC Windows builds of rustc generate these, which store debugging information
+*.pdb
diff --git a/app/Cargo.toml b/app/Cargo.toml
index 5e38c0a..b2cd285 100644
--- a/app/Cargo.toml
+++ b/app/Cargo.toml
@@ -1,36 +1,15 @@
[package]
-edition = "2021"
-name = "app"
-version = "0.1.0"
+authors.workspace = true
+description.workspace = true
+documentation.workspace = true
+edition.workspace = true
+homepge.workspace = true
+keywords.workspace = true
+exclude.workspace = true
+license-file.workspace = true
+version.workspace = true
+name = "uranium"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
-async-trait = "0.1.73"
-axum = {version = "0.6.20", features = ["json"]}
-bcrypt = "0.15.0"
-chrono = "0.4.26"
-dotenv = "0.15.0"
-dotenvy = "0.15.7"
-entity = {path = "../entity"}
-error = "0.1.9"
-fake = "2.6.1"
-futures = "0.3.28"
-http-body = "0.4.5"
-jsonwebtoken = "8.3.0"
-log = "0.4.19"
-migration = {path = "../migration"}
-sea-orm = {version = "0.12.2", features = ["macros", "debug-print", "with-uuid", "sqlx-postgres", "runtime-tokio-rustls"]}
-serde = "1.0.181"
-serde_json = "1.0.104"
-simple_logger = "4.2.0"
-this = "0.3.0"
-thiserror = "1.0.44"
-tokio = {version = "1.29.1", features = ["full"]}
-tower-http = {version = "0.4.3", features = ["cors", "trace"]}
-tracing = "0.1.37"
-tracing-subscriber = {version = "0.3.17", features = ["env-filter"]}
-uuid = "1.4.1"
-validator = {version = "0.16.1", features = ["derive"]}
-prost = {workspace = true}
-tonic = {workspace = true}
diff --git a/app/src/main.rs b/app/src/main.rs
new file mode 100644
index 0000000..e7a11a9
--- /dev/null
+++ b/app/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
new file mode 100644
index 0000000..828028b
--- /dev/null
+++ b/cli/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+authors.workspace = true
+description.workspace = true
+documentation.workspace = true
+edition.workspace = true
+homepge.workspace = true
+keywords.workspace = true
+exclude.workspace = true
+license-file.workspace = true
+version.workspace = true
+name="uranium-cli"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/cli/src/main.rs b/cli/src/main.rs
new file mode 100644
index 0000000..e7a11a9
--- /dev/null
+++ b/cli/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}
diff --git a/dashboard/app.vue b/dashboard/app.vue
index 09f935b..fa4ee3e 100644
--- a/dashboard/app.vue
+++ b/dashboard/app.vue
@@ -1,6 +1,6 @@
-
+
diff --git a/dashboard/assets/css/main.css b/dashboard/assets/css/main.css
new file mode 100644
index 0000000..bd6213e
--- /dev/null
+++ b/dashboard/assets/css/main.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
\ No newline at end of file
diff --git a/dashboard/nuxt.config.ts b/dashboard/nuxt.config.ts
index 8851e77..3d50a82 100644
--- a/dashboard/nuxt.config.ts
+++ b/dashboard/nuxt.config.ts
@@ -1,4 +1,12 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
- devtools: { enabled: true }
-})
+ devtools: { enabled: true },
+ css: ["~/assets/css/main.css"],
+ modules: ["nuxt-icon"],
+ postcss: {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+ },
+});
diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json
index 22c21ec..4943cd4 100644
--- a/dashboard/package-lock.json
+++ b/dashboard/package-lock.json
@@ -10,6 +10,24 @@
"nuxt": "^3.12.2",
"vue": "^3.4.29",
"vue-router": "^4.3.3"
+ },
+ "devDependencies": {
+ "autoprefixer": "^10.4.19",
+ "nuxt-icon": "^0.6.10",
+ "postcss": "^8.4.38",
+ "tailwindcss": "^3.4.4"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@ampproject/remapping": {
@@ -1065,11 +1083,19 @@
"integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==",
"peer": true
},
+ "node_modules/@iconify/collections": {
+ "version": "1.0.433",
+ "resolved": "https://registry.npmjs.org/@iconify/collections/-/collections-1.0.433.tgz",
+ "integrity": "sha512-MeMIbKv32s+b4bMY80H6NjnovdA0oEUZvnzo/HxpFImw3tF5QoZjaVuR1RPudOXveIQGprfRFUbOO7vmbbYHsw==",
+ "dev": true,
+ "dependencies": {
+ "@iconify/types": "*"
+ }
+ },
"node_modules/@iconify/types": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
- "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
- "peer": true
+ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
},
"node_modules/@iconify/utils": {
"version": "2.1.24",
@@ -1086,6 +1112,21 @@
"mlly": "^1.6.1"
}
},
+ "node_modules/@iconify/vue": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-4.1.2.tgz",
+ "integrity": "sha512-CQnYqLiQD5LOAaXhBrmj1mdL2/NCJvwcC4jtW2Z8ukhThiFkLDkutarTOV2trfc9EXqUqRs0KqXOL9pZ/IyysA==",
+ "dev": true,
+ "dependencies": {
+ "@iconify/types": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/cyberalien"
+ },
+ "peerDependencies": {
+ "vue": ">=3"
+ }
+ },
"node_modules/@ioredis/commands": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
@@ -4059,6 +4100,12 @@
"node": ">=4"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -4183,6 +4230,12 @@
"node": ">= 6"
}
},
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -4561,6 +4614,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -5268,6 +5330,12 @@
"resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz",
"integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA=="
},
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
+ },
"node_modules/diff": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
@@ -5276,6 +5344,12 @@
"node": ">=0.3.1"
}
},
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -6641,6 +6715,12 @@
"url": "https://github.com/sponsors/antonk52"
}
},
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
"node_modules/listhen": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz",
@@ -7074,6 +7154,17 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
"node_modules/nanoid": {
"version": "5.0.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz",
@@ -8026,6 +8117,18 @@
}
}
},
+ "node_modules/nuxt-icon": {
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/nuxt-icon/-/nuxt-icon-0.6.10.tgz",
+ "integrity": "sha512-S9zHVA66ox4ZSpMWvCjqKZC4ZogC0s2z3vZs+M4D95YXGPEXwxDZu+insMKvkbe8+k7gvEmtTk0eq3KusKlxiw==",
+ "dev": true,
+ "dependencies": {
+ "@iconify/collections": "^1.0.406",
+ "@iconify/vue": "^4.1.1",
+ "@nuxt/devtools-kit": "^1.1.1",
+ "@nuxt/kit": "^3.11.1"
+ }
+ },
"node_modules/nypm": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz",
@@ -8104,6 +8207,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/ofetch": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz",
@@ -8430,6 +8542,24 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/pkg-types": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz",
@@ -8561,6 +8691,77 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "dev": true,
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
"node_modules/postcss-merge-longhand": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.2.tgz",
@@ -8654,6 +8855,25 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
"node_modules/postcss-normalize-charset": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz",
@@ -9005,6 +9225,15 @@
"destr": "^2.0.3"
}
},
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
"node_modules/readable-stream": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
@@ -9766,6 +9995,75 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.4.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
+ "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -9833,6 +10131,64 @@
"resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
"integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
},
+ "node_modules/tailwindcss": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz",
+ "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==",
+ "dev": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.21.0",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/tapable": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
@@ -9932,6 +10288,27 @@
"b4a": "^1.6.4"
}
},
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/tiny-invariant": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
@@ -9977,6 +10354,12 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
"node_modules/tuf-js": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz",
diff --git a/dashboard/package.json b/dashboard/package.json
index d8a91c5..1ce738d 100644
--- a/dashboard/package.json
+++ b/dashboard/package.json
@@ -13,5 +13,11 @@
"nuxt": "^3.12.2",
"vue": "^3.4.29",
"vue-router": "^4.3.3"
+ },
+ "devDependencies": {
+ "autoprefixer": "^10.4.19",
+ "nuxt-icon": "^0.6.10",
+ "postcss": "^8.4.38",
+ "tailwindcss": "^3.4.4"
}
}
diff --git a/dashboard/pages/auth/confirm.vue b/dashboard/pages/auth/confirm.vue
new file mode 100644
index 0000000..131ff48
--- /dev/null
+++ b/dashboard/pages/auth/confirm.vue
@@ -0,0 +1,6 @@
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores voluptatem consectetur, ab ut expedita nostrum sit cum distinctio soluta optio excepturi qui reprehenderit sequi at maiores, id, ea incidunt ipsa?
+
+
+
+
\ No newline at end of file
diff --git a/dashboard/pages/auth/login.vue b/dashboard/pages/auth/login.vue
new file mode 100644
index 0000000..131ff48
--- /dev/null
+++ b/dashboard/pages/auth/login.vue
@@ -0,0 +1,6 @@
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores voluptatem consectetur, ab ut expedita nostrum sit cum distinctio soluta optio excepturi qui reprehenderit sequi at maiores, id, ea incidunt ipsa?
+
+
+
+
\ No newline at end of file
diff --git a/dashboard/pages/auth/reset.vue b/dashboard/pages/auth/reset.vue
new file mode 100644
index 0000000..131ff48
--- /dev/null
+++ b/dashboard/pages/auth/reset.vue
@@ -0,0 +1,6 @@
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores voluptatem consectetur, ab ut expedita nostrum sit cum distinctio soluta optio excepturi qui reprehenderit sequi at maiores, id, ea incidunt ipsa?
+
+
+
+
\ No newline at end of file
diff --git a/dashboard/pages/auth/signup.vue b/dashboard/pages/auth/signup.vue
new file mode 100644
index 0000000..131ff48
--- /dev/null
+++ b/dashboard/pages/auth/signup.vue
@@ -0,0 +1,6 @@
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores voluptatem consectetur, ab ut expedita nostrum sit cum distinctio soluta optio excepturi qui reprehenderit sequi at maiores, id, ea incidunt ipsa?
+
+
+
+
\ No newline at end of file
diff --git a/dashboard/pages/index.vue b/dashboard/pages/index.vue
new file mode 100644
index 0000000..109d5a3
--- /dev/null
+++ b/dashboard/pages/index.vue
@@ -0,0 +1,7 @@
+
+
+ Hello world!
+
+
+
+
\ No newline at end of file
diff --git a/dashboard/tailwind.config.js b/dashboard/tailwind.config.js
new file mode 100644
index 0000000..11d4f7e
--- /dev/null
+++ b/dashboard/tailwind.config.js
@@ -0,0 +1,15 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: [
+ "./components/**/*.{js,vue,ts}",
+ "./layouts/**/*.vue",
+ "./pages/**/*.vue",
+ "./plugins/**/*.{js,ts}",
+ "./app.vue",
+ "./error.vue",
+ ],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+};
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e7ad328
--- /dev/null
+++ b/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "uranium",
+ "version": "1.0.0",
+ "description": "Free deployable central authorization system for small and enterprise scale application",
+ "main": "index.js",
+ "directories": {
+ "doc": "docs"
+ },
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 0000000..c6bba59
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1,130 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
diff --git a/scripts/dev.app.js b/scripts/dev.app.js
new file mode 100644
index 0000000..e69de29
diff --git a/scripts/package.js b/scripts/package.js
new file mode 100644
index 0000000..e69de29
diff --git a/scripts/package.json b/scripts/package.json
new file mode 100644
index 0000000..b9f31d6
--- /dev/null
+++ b/scripts/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "scripts",
+ "version": "1.0.0",
+ "description": "uraniun run scripts ",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC"
+}