- {{#let "flex items-center px-4 py-2 font-semibold text-lg text-gray-dark hover:text-black" as |linkClass|}}
+
+ {{#let
+ 'flex items-center px-4 py-2 font-semibold text-lg text-gray-dark hover:text-black'
+ as |linkClass|
+ }}
{{/let}}
-
-
v{{@model.version.pkgVersion}}
- {{#if (eq @model.health.status "available")}}
-
+
+ v{{@model.version.pkgVersion}}
+ {{#if (eq @model.health.status 'available')}}
+
{{else}}
-
+
{{/if}}
-
diff --git a/app/templates/application.hbs b/app/templates/application.hbs
new file mode 100644
index 0000000..0a5bdac
--- /dev/null
+++ b/app/templates/application.hbs
@@ -0,0 +1,2 @@
+{{page-title "Application"}}
+{{outlet}}
\ No newline at end of file
diff --git a/app/templates/login.hbs b/app/templates/login.hbs
new file mode 100644
index 0000000..ded6a98
--- /dev/null
+++ b/app/templates/login.hbs
@@ -0,0 +1,54 @@
+{{page-title 'Login'}}
+
+
+
+
+
+
+
+
+ Meilisearch
+ — an open-source, lightning-fast, and hyper-relevant search engine that
+ fits effortlessly into your apps, websites, and workflow.
+
+
+
+ Meilisearch Admin
+
+
+
diff --git a/app/utils/query.js b/app/utils/query.js
index 5cc8e29..af752b6 100644
--- a/app/utils/query.js
+++ b/app/utils/query.js
@@ -1,14 +1,19 @@
-const host = 'http://127.0.0.1:7700';
+import { instance } from '../instance-initializers/application';
-export default function query(path, options) {
- const url = `${host}/${path}`;
- const defaultOptions = {
- headers: {
- 'Content-Type': 'application/json',
- },
- };
+export default function query(path, options = {}) {
+ const session = instance.lookup('service:session');
+ const { url, key } = session.data.authenticated;
+ const defaultHeaders = { 'Content-Type': 'application/json' };
+ const headers = new Headers(Object.assign(defaultHeaders, options.headers));
- return fetch(url, Object.assign(defaultOptions, options)).then((response) =>
- response.json()
+ if (key) {
+ headers.append('Authorization', `Bearer ${key}`);
+ }
+
+ const req = new Request(
+ new URL(path, url),
+ Object.assign(options, { headers })
);
+
+ return fetch(req).then((res) => res.json());
}
diff --git a/ember-cli-build.js b/ember-cli-build.js
index a4c0494..a024e3c 100644
--- a/ember-cli-build.js
+++ b/ember-cli-build.js
@@ -12,6 +12,9 @@ module.exports = function (defaults) {
'ember-power-select': {
theme: false,
},
+ 'ember-simple-auth': {
+ useSessionSetupMethod: true,
+ },
});
return require('@embroider/compat').compatBuild(app, Webpack, {
diff --git a/package-lock.json b/package-lock.json
index b16fb3c..b8babe3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -56,6 +56,7 @@
"ember-resolver": "^8.0.3",
"ember-resources": "^4.7.1",
"ember-set-helper": "^2.0.1",
+ "ember-simple-auth": "^4.2.2",
"ember-sortable": "^3.0.1",
"ember-source": "~4.6.0",
"ember-template-lint": "^4.10.1",
@@ -7260,6 +7261,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/base-64": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
+ "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==",
+ "dev": true
+ },
"node_modules/base/node_modules/define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
@@ -14143,6 +14150,19 @@
"node": "8.* || >= 10.*"
}
},
+ "node_modules/ember-cookies": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/ember-cookies/-/ember-cookies-0.5.2.tgz",
+ "integrity": "sha512-nZ7oG97kBcO9UHjO95ryABpnVx62Bhxo7lIsBJNmWvFXleILm9DGueiAynzXxuYWWPuKIeeSbYakrS1869tNTw==",
+ "dev": true,
+ "dependencies": {
+ "ember-cli-babel": "^7.1.0",
+ "ember-getowner-polyfill": "^1.1.0 || ^2.0.0"
+ },
+ "engines": {
+ "node": "8.* || 10.* || >= 12.*"
+ }
+ },
"node_modules/ember-destroyable-polyfill": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz",
@@ -14174,6 +14194,40 @@
"ember-source": "^3.8 || 4"
}
},
+ "node_modules/ember-factory-for-polyfill": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/ember-factory-for-polyfill/-/ember-factory-for-polyfill-1.3.1.tgz",
+ "integrity": "sha512-y3iG2iCzH96lZMTWQw6LWNLAfOmDC4pXKbZP6FxG8lt7GGaNFkZjwsf+Z5GAe7kxfD7UG4lVkF7x37K82rySGA==",
+ "dev": true,
+ "dependencies": {
+ "ember-cli-version-checker": "^2.1.0"
+ },
+ "engines": {
+ "node": "^4.5 || 6.* || >= 7.*"
+ }
+ },
+ "node_modules/ember-factory-for-polyfill/node_modules/ember-cli-version-checker": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz",
+ "integrity": "sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.3.3",
+ "semver": "^5.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ember-factory-for-polyfill/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/ember-fetch": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/ember-fetch/-/ember-fetch-8.1.1.tgz",
@@ -14338,6 +14392,41 @@
"node": "12.* || 14.* || >= 16"
}
},
+ "node_modules/ember-getowner-polyfill": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ember-getowner-polyfill/-/ember-getowner-polyfill-2.2.0.tgz",
+ "integrity": "sha512-rwGMJgbGzxIAiWYjdpAh04Abvt0s3HuS/VjHzUFhVyVg2pzAuz45B9AzOxYXzkp88vFC7FPaiA4kE8NxNk4A4Q==",
+ "dev": true,
+ "dependencies": {
+ "ember-cli-version-checker": "^2.1.0",
+ "ember-factory-for-polyfill": "^1.3.1"
+ },
+ "engines": {
+ "node": "^4.5 || 6.* || >= 7.*"
+ }
+ },
+ "node_modules/ember-getowner-polyfill/node_modules/ember-cli-version-checker": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz",
+ "integrity": "sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.3.3",
+ "semver": "^5.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ember-getowner-polyfill/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/ember-in-element-polyfill": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ember-in-element-polyfill/-/ember-in-element-polyfill-1.0.1.tgz",
@@ -16099,6 +16188,140 @@
"node": "10.* || >= 12"
}
},
+ "node_modules/ember-simple-auth": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/ember-simple-auth/-/ember-simple-auth-4.2.2.tgz",
+ "integrity": "sha512-D7W6OREUvf5OzeB0ePptSNBilccchRYukH4f7mkbL6WT+z6VEqRRAIaQuBZdFM6lrcSFGmzctINLZJwsIpI3wg==",
+ "dev": true,
+ "dependencies": {
+ "base-64": "^0.1.0",
+ "broccoli-file-creator": "^2.1.1",
+ "broccoli-funnel": "^1.2.0 || ^2.0.0",
+ "broccoli-merge-trees": "^4.0.0",
+ "ember-cli-babel": "^7.20.5",
+ "ember-cli-is-package-missing": "^1.0.0",
+ "ember-cookies": "^0.5.0",
+ "silent-error": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 12"
+ },
+ "peerDependencies": {
+ "ember-fetch": "^8.0.1"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/broccoli-funnel": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz",
+ "integrity": "sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==",
+ "dev": true,
+ "dependencies": {
+ "array-equal": "^1.0.0",
+ "blank-object": "^1.0.1",
+ "broccoli-plugin": "^1.3.0",
+ "debug": "^2.2.0",
+ "fast-ordered-set": "^1.0.0",
+ "fs-tree-diff": "^0.5.3",
+ "heimdalljs": "^0.2.0",
+ "minimatch": "^3.0.0",
+ "mkdirp": "^0.5.0",
+ "path-posix": "^1.0.0",
+ "rimraf": "^2.4.3",
+ "symlink-or-copy": "^1.0.0",
+ "walk-sync": "^0.3.1"
+ },
+ "engines": {
+ "node": "^4.5 || 6.* || >= 7.*"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/broccoli-merge-trees": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/broccoli-merge-trees/-/broccoli-merge-trees-4.2.0.tgz",
+ "integrity": "sha512-nTrQe5AQtCrW4enLRvbD/vTLHqyW2tz+vsLXQe4IEaUhepuMGVKJJr+I8n34Vu6fPjmPLwTjzNC8izMIDMtHPw==",
+ "dev": true,
+ "dependencies": {
+ "broccoli-plugin": "^4.0.2",
+ "merge-trees": "^2.0.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/broccoli-merge-trees/node_modules/broccoli-plugin": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz",
+ "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==",
+ "dev": true,
+ "dependencies": {
+ "broccoli-node-api": "^1.7.0",
+ "broccoli-output-wrapper": "^3.2.5",
+ "fs-merger": "^3.2.1",
+ "promise-map-series": "^0.3.0",
+ "quick-temp": "^0.1.8",
+ "rimraf": "^3.0.2",
+ "symlink-or-copy": "^1.3.1"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/broccoli-merge-trees/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "node_modules/ember-simple-auth/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ember-simple-auth/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/ember-simple-auth/node_modules/promise-map-series": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/promise-map-series/-/promise-map-series-0.3.0.tgz",
+ "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==",
+ "dev": true,
+ "engines": {
+ "node": "10.* || >= 12.*"
+ }
+ },
"node_modules/ember-sortable": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ember-sortable/-/ember-sortable-3.0.1.tgz",
@@ -35584,6 +35807,12 @@
}
}
},
+ "base-64": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
+ "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==",
+ "dev": true
+ },
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -41319,6 +41548,16 @@
}
}
},
+ "ember-cookies": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/ember-cookies/-/ember-cookies-0.5.2.tgz",
+ "integrity": "sha512-nZ7oG97kBcO9UHjO95ryABpnVx62Bhxo7lIsBJNmWvFXleILm9DGueiAynzXxuYWWPuKIeeSbYakrS1869tNTw==",
+ "dev": true,
+ "requires": {
+ "ember-cli-babel": "^7.1.0",
+ "ember-getowner-polyfill": "^1.1.0 || ^2.0.0"
+ }
+ },
"ember-destroyable-polyfill": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz",
@@ -41341,6 +41580,33 @@
"ember-cli-htmlbars": "^6.0.1"
}
},
+ "ember-factory-for-polyfill": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/ember-factory-for-polyfill/-/ember-factory-for-polyfill-1.3.1.tgz",
+ "integrity": "sha512-y3iG2iCzH96lZMTWQw6LWNLAfOmDC4pXKbZP6FxG8lt7GGaNFkZjwsf+Z5GAe7kxfD7UG4lVkF7x37K82rySGA==",
+ "dev": true,
+ "requires": {
+ "ember-cli-version-checker": "^2.1.0"
+ },
+ "dependencies": {
+ "ember-cli-version-checker": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz",
+ "integrity": "sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.3.3",
+ "semver": "^5.3.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
"ember-fetch": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/ember-fetch/-/ember-fetch-8.1.1.tgz",
@@ -41476,6 +41742,34 @@
"ember-cli-babel": "^7.26.6"
}
},
+ "ember-getowner-polyfill": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ember-getowner-polyfill/-/ember-getowner-polyfill-2.2.0.tgz",
+ "integrity": "sha512-rwGMJgbGzxIAiWYjdpAh04Abvt0s3HuS/VjHzUFhVyVg2pzAuz45B9AzOxYXzkp88vFC7FPaiA4kE8NxNk4A4Q==",
+ "dev": true,
+ "requires": {
+ "ember-cli-version-checker": "^2.1.0",
+ "ember-factory-for-polyfill": "^1.3.1"
+ },
+ "dependencies": {
+ "ember-cli-version-checker": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz",
+ "integrity": "sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.3.3",
+ "semver": "^5.3.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
"ember-in-element-polyfill": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ember-in-element-polyfill/-/ember-in-element-polyfill-1.0.1.tgz",
@@ -42903,6 +43197,117 @@
"ember-cli-babel": "^7.18.0"
}
},
+ "ember-simple-auth": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/ember-simple-auth/-/ember-simple-auth-4.2.2.tgz",
+ "integrity": "sha512-D7W6OREUvf5OzeB0ePptSNBilccchRYukH4f7mkbL6WT+z6VEqRRAIaQuBZdFM6lrcSFGmzctINLZJwsIpI3wg==",
+ "dev": true,
+ "requires": {
+ "base-64": "^0.1.0",
+ "broccoli-file-creator": "^2.1.1",
+ "broccoli-funnel": "^1.2.0 || ^2.0.0",
+ "broccoli-merge-trees": "^4.0.0",
+ "ember-cli-babel": "^7.20.5",
+ "ember-cli-is-package-missing": "^1.0.0",
+ "ember-cookies": "^0.5.0",
+ "silent-error": "^1.0.0"
+ },
+ "dependencies": {
+ "broccoli-funnel": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz",
+ "integrity": "sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==",
+ "dev": true,
+ "requires": {
+ "array-equal": "^1.0.0",
+ "blank-object": "^1.0.1",
+ "broccoli-plugin": "^1.3.0",
+ "debug": "^2.2.0",
+ "fast-ordered-set": "^1.0.0",
+ "fs-tree-diff": "^0.5.3",
+ "heimdalljs": "^0.2.0",
+ "minimatch": "^3.0.0",
+ "mkdirp": "^0.5.0",
+ "path-posix": "^1.0.0",
+ "rimraf": "^2.4.3",
+ "symlink-or-copy": "^1.0.0",
+ "walk-sync": "^0.3.1"
+ }
+ },
+ "broccoli-merge-trees": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/broccoli-merge-trees/-/broccoli-merge-trees-4.2.0.tgz",
+ "integrity": "sha512-nTrQe5AQtCrW4enLRvbD/vTLHqyW2tz+vsLXQe4IEaUhepuMGVKJJr+I8n34Vu6fPjmPLwTjzNC8izMIDMtHPw==",
+ "dev": true,
+ "requires": {
+ "broccoli-plugin": "^4.0.2",
+ "merge-trees": "^2.0.0"
+ },
+ "dependencies": {
+ "broccoli-plugin": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz",
+ "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==",
+ "dev": true,
+ "requires": {
+ "broccoli-node-api": "^1.7.0",
+ "broccoli-output-wrapper": "^3.2.5",
+ "fs-merger": "^3.2.1",
+ "promise-map-series": "^0.3.0",
+ "quick-temp": "^0.1.8",
+ "rimraf": "^3.0.2",
+ "symlink-or-copy": "^1.3.1"
+ }
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "promise-map-series": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/promise-map-series/-/promise-map-series-0.3.0.tgz",
+ "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==",
+ "dev": true
+ }
+ }
+ },
"ember-sortable": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ember-sortable/-/ember-sortable-3.0.1.tgz",
diff --git a/package.json b/package.json
index c88a8c0..edc0121 100644
--- a/package.json
+++ b/package.json
@@ -76,6 +76,7 @@
"ember-resolver": "^8.0.3",
"ember-resources": "^4.7.1",
"ember-set-helper": "^2.0.1",
+ "ember-simple-auth": "^4.2.2",
"ember-sortable": "^3.0.1",
"ember-source": "~4.6.0",
"ember-template-lint": "^4.10.1",
diff --git a/tests/unit/controllers/login-test.js b/tests/unit/controllers/login-test.js
new file mode 100644
index 0000000..835154d
--- /dev/null
+++ b/tests/unit/controllers/login-test.js
@@ -0,0 +1,12 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'meilisearch-admin/tests/helpers';
+
+module('Unit | Controller | login', function (hooks) {
+ setupTest(hooks);
+
+ // TODO: Replace this with your real tests.
+ test('it exists', function (assert) {
+ let controller = this.owner.lookup('controller:login');
+ assert.ok(controller);
+ });
+});
diff --git a/tests/unit/instance-initializers/application-test.js b/tests/unit/instance-initializers/application-test.js
new file mode 100644
index 0000000..4493ff4
--- /dev/null
+++ b/tests/unit/instance-initializers/application-test.js
@@ -0,0 +1,39 @@
+import Application from '@ember/application';
+
+import config from 'meilisearch-admin/config/environment';
+import { initialize } from 'meilisearch-admin/instance-initializers/application';
+import { module, test } from 'qunit';
+import Resolver from 'ember-resolver';
+import { run } from '@ember/runloop';
+
+module('Unit | Instance Initializer | application', function (hooks) {
+ hooks.beforeEach(function () {
+ this.TestApplication = class TestApplication extends Application {
+ modulePrefix = config.modulePrefix;
+ podModulePrefix = config.podModulePrefix;
+ Resolver = Resolver;
+ };
+
+ this.TestApplication.instanceInitializer({
+ name: 'initializer under test',
+ initialize,
+ });
+
+ this.application = this.TestApplication.create({
+ autoboot: false,
+ });
+
+ this.instance = this.application.buildInstance();
+ });
+ hooks.afterEach(function () {
+ run(this.instance, 'destroy');
+ run(this.application, 'destroy');
+ });
+
+ // TODO: Replace this with your real tests.
+ test('it works', async function (assert) {
+ await this.instance.boot();
+
+ assert.ok(true);
+ });
+});
diff --git a/tests/unit/routes/application-test.js b/tests/unit/routes/application-test.js
new file mode 100644
index 0000000..b334011
--- /dev/null
+++ b/tests/unit/routes/application-test.js
@@ -0,0 +1,11 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'meilisearch-admin/tests/helpers';
+
+module('Unit | Route | application', function (hooks) {
+ setupTest(hooks);
+
+ test('it exists', function (assert) {
+ let route = this.owner.lookup('route:application');
+ assert.ok(route);
+ });
+});
diff --git a/tests/unit/routes/login-test.js b/tests/unit/routes/login-test.js
new file mode 100644
index 0000000..e266742
--- /dev/null
+++ b/tests/unit/routes/login-test.js
@@ -0,0 +1,11 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'meilisearch-admin/tests/helpers';
+
+module('Unit | Route | login', function (hooks) {
+ setupTest(hooks);
+
+ test('it exists', function (assert) {
+ let route = this.owner.lookup('route:login');
+ assert.ok(route);
+ });
+});