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 @@ + + + + \ 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 @@ + + + + \ 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 @@ + + + + \ 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 @@ + + + + \ 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 @@ + + + \ 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" +}