├── .editorconfig ├── .env.example ├── .flake8 ├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── Version_2.md │ ├── bug_report.md │ └── feature_request.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .travis.yml ├── LICENSE ├── Makefile ├── Procfile ├── Procfile.dev ├── README.md ├── app.json ├── autodeploy ├── README.md ├── auto_updater.py ├── command.py ├── config.yml ├── docker.py ├── git.py └── main.py ├── backend ├── .gitignore ├── Dockerfile ├── README.md ├── __init__.py ├── badge_backgrounds │ ├── black_futuristic.png │ ├── blue_futuristic.png │ ├── cyan_futuristic.png │ ├── gray_futuristic.png │ ├── green_futuristic.png │ ├── red_futuristic.png │ ├── user_defined.png │ └── yellow_futuristic.png ├── config │ ├── ServiceAccountkey.json │ ├── __init__.py │ ├── app.example.yaml │ ├── config.py │ ├── dev_config.py │ └── urlConfig.py ├── controllers │ ├── __init__.py │ ├── admin.py │ ├── assetHelper.py │ ├── changeMeta.py │ ├── changePermissions.py │ ├── errorHandlers.py │ ├── exportData.py │ ├── fileUploader.py │ ├── generateBadges.py │ ├── loginUser.py │ ├── modifyUser.py │ ├── oauthToken.py │ ├── registerUser.py │ ├── resetUser.py │ ├── stripePay.py │ ├── updateProfile.py │ └── validation.py ├── db.py ├── docker-compose.yml ├── helpers │ ├── __init__.py │ ├── uploads.py │ ├── verifyPassword.py │ └── verifyToken.py ├── migrations │ ├── README │ ├── alembic.ini │ ├── env.py │ ├── script.py.mako │ └── versions │ │ ├── 2780e9c4144f_.py │ │ ├── 44af135eb41b_.py │ │ ├── 90bcaf09b4eb_.py │ │ ├── 9f78f55cf7f3_.py │ │ ├── b6414a3cd355_.py │ │ ├── cb411916be68_.py │ │ └── efb1c182508b_.py ├── models │ ├── __init__.py │ ├── admin.py │ ├── badges.py │ ├── file.py │ ├── modules.py │ ├── permissions.py │ ├── settings.py │ ├── socialContent.py │ ├── stripe.py │ ├── token.py │ ├── user.py │ └── utils.py ├── requirements.txt ├── run.py ├── schemas │ ├── admin.py │ ├── badges.py │ ├── errors.py │ ├── file.py │ ├── modules.py │ ├── operation.py │ ├── permissions.py │ ├── token.py │ ├── user.py │ └── utils.py ├── static │ └── badges │ │ ├── 4.5x4onA2.svg │ │ ├── 4.5x4onA3.svg │ │ ├── 4.5x4onA4.svg │ │ ├── 4.5x4onUS_Letter.svg │ │ ├── 4x3onA2.svg │ │ ├── 4x3onA3.svg │ │ ├── 4x3onA4.svg │ │ ├── 4x3onUS_Letter.svg │ │ └── 8BadgesOnA3.svg ├── svg │ └── user_defined.svg └── utils │ ├── __init__.py │ ├── dimen.py │ ├── encryptUtil.py │ ├── errors.py │ ├── firebaseUploader.py │ ├── generate_badges.py │ ├── mail.py │ ├── merge_badges.py │ ├── response.py │ ├── svg_to_png.py │ └── update_user.py ├── cloud-functions ├── .firebaserc ├── firebase.json └── functions │ ├── .eslintrc.json │ ├── .gitignore │ ├── greeting.html │ ├── index.js │ ├── package-lock.json │ └── package.json ├── codecov.yml ├── docs ├── backend │ └── installation │ │ ├── README.md │ │ ├── aws.md │ │ ├── aws │ │ ├── aws1.png │ │ ├── aws2.png │ │ ├── aws3.png │ │ └── aws4.png │ │ ├── demo.gif │ │ ├── docker.md │ │ ├── heroku.md │ │ ├── localvag.md │ │ └── localvir.md └── frontend │ └── installation │ ├── README.md │ ├── heroku.md │ ├── kubernetes.md │ └── local.md ├── frontend ├── .ember-cli ├── .eslintrc.js ├── .gitignore ├── .template-lintrc.js ├── .watchmanconfig ├── Dockerfile ├── README.md ├── app │ ├── adapters │ │ ├── admin-report.js │ │ ├── admin-stat-mail.js │ │ ├── admin-stat-user.js │ │ ├── admin.js │ │ ├── all-admin-badge.js │ │ ├── all-badge.js │ │ ├── all-user.js │ │ ├── application.js │ │ ├── badge.js │ │ ├── bg-color.js │ │ ├── create-admin.js │ │ ├── create-sale.js │ │ ├── csv-file.js │ │ ├── cust-img-file.js │ │ ├── def-image-upload.js │ │ ├── def-image.js │ │ ├── delete-admin.js │ │ ├── delete-sale.js │ │ ├── image-upload.js │ │ ├── login-token.js │ │ ├── message.js │ │ ├── module.js │ │ ├── my-badges.js │ │ ├── permission.js │ │ ├── profile-image.js │ │ ├── reset-mail.js │ │ ├── reset-password.js │ │ ├── reset-user.js │ │ ├── role.js │ │ ├── setting.js │ │ ├── social-content.js │ │ ├── text-data.js │ │ ├── user-signup.js │ │ ├── user.js │ │ ├── valid-token.js │ │ └── verify-mail.js │ ├── app.js │ ├── authorizers │ │ └── oauth2.js │ ├── components │ │ ├── admin │ │ │ ├── deployment-comp.js │ │ │ ├── firebase-comp.js │ │ │ ├── pricing-comp.js │ │ │ ├── usage-stat-comp.js │ │ │ └── user-comp.js │ │ ├── background-component │ │ │ ├── color-bg-component.js │ │ │ ├── def-image-component.js │ │ │ ├── image-component.js │ │ │ └── logo-image-component.js │ │ ├── badge-component │ │ │ ├── badge-background.js │ │ │ ├── badge-size.js │ │ │ └── paper-size.js │ │ ├── badge-name.js │ │ ├── badge-table.js │ │ ├── contact-badgeyay.js │ │ ├── create-badge.js │ │ ├── data-component.js │ │ ├── data-component │ │ │ ├── csv-component.js │ │ │ ├── name-component.js │ │ │ └── text-component.js │ │ ├── dimmer-loader.js │ │ ├── error-component │ │ │ ├── not-found.js │ │ │ └── server-error.js │ │ ├── footer-main.js │ │ ├── forgot-password.js │ │ ├── forms │ │ │ ├── image-upload.js │ │ │ ├── login-form.js │ │ │ ├── signup-form.js │ │ │ └── system-settings-form.js │ │ ├── modals │ │ │ ├── add-system-role-modal.js │ │ │ ├── cropper-modal.js │ │ │ └── modal-base.js │ │ ├── nav-bar.js │ │ ├── overlay-welcome.js │ │ ├── password-comp.js │ │ ├── pricing-component.js │ │ ├── tabbed-navigation.js │ │ ├── text-component │ │ │ ├── font-color.js │ │ │ └── font-size.js │ │ ├── user-card.js │ │ ├── user-component │ │ │ ├── my-badges.js │ │ │ ├── my-profile.js │ │ │ ├── preview.js │ │ │ ├── user-account.js │ │ │ ├── user-guide.js │ │ │ └── user-password.js │ │ ├── user-table.js │ │ ├── verify-mail.js │ │ └── welcome-header.js │ ├── controllers │ │ ├── admin.js │ │ ├── admin │ │ │ ├── badges.js │ │ │ ├── badges │ │ │ │ └── list.js │ │ │ ├── content │ │ │ │ └── index.js │ │ │ ├── messages.js │ │ │ ├── modules.js │ │ │ ├── permissions │ │ │ │ └── system-roles.js │ │ │ ├── reports │ │ │ │ └── list.js │ │ │ ├── settings.js │ │ │ ├── users.js │ │ │ └── users │ │ │ │ └── list.js │ │ ├── application.js │ │ ├── create-badges.js │ │ ├── edit-badge.js │ │ ├── forgotpwd.js │ │ ├── login.js │ │ ├── logout.js │ │ ├── my-badges.js │ │ ├── my-profile.js │ │ ├── reset │ │ │ └── password.js │ │ ├── settings.js │ │ ├── signup.js │ │ └── verify │ │ │ └── email.js │ ├── helpers │ │ ├── def-images.js │ │ ├── extract-role.js │ │ ├── extract-time-stamp.js │ │ ├── first-cap.js │ │ ├── if-equal.js │ │ ├── init-cap.js │ │ ├── rel.js │ │ └── sanitizeDate.js │ ├── index.html │ ├── models │ │ ├── admin-report.js │ │ ├── admin-stat-mail.js │ │ ├── admin-stat-user.js │ │ ├── admin.js │ │ ├── all-admin-badge.js │ │ ├── all-badge.js │ │ ├── all-user.js │ │ ├── badge.js │ │ ├── bg-color.js │ │ ├── create-admin.js │ │ ├── create-sale.js │ │ ├── csv-file.js │ │ ├── cust-img-file.js │ │ ├── def-image-upload.js │ │ ├── def-image.js │ │ ├── delete-admin.js │ │ ├── delete-sale.js │ │ ├── image-upload.js │ │ ├── login-token.js │ │ ├── message.js │ │ ├── module.js │ │ ├── my-badges.js │ │ ├── permission.js │ │ ├── profile-image.js │ │ ├── reset-mail.js │ │ ├── reset-password.js │ │ ├── reset-user.js │ │ ├── role.js │ │ ├── setting.js │ │ ├── social-content.js │ │ ├── text-data.js │ │ ├── user-signup.js │ │ ├── user.js │ │ ├── valid-token.js │ │ └── verify-mail.js │ ├── resolver.js │ ├── router.js │ ├── routes │ │ ├── about.js │ │ ├── admin.js │ │ ├── admin │ │ │ ├── badges.js │ │ │ ├── badges │ │ │ │ ├── index.js │ │ │ │ └── list.js │ │ │ ├── content.js │ │ │ ├── content │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── messages.js │ │ │ ├── modules.js │ │ │ ├── permissions.js │ │ │ ├── permissions │ │ │ │ ├── index.js │ │ │ │ └── system-roles.js │ │ │ ├── reports.js │ │ │ ├── reports │ │ │ │ ├── index.js │ │ │ │ └── list.js │ │ │ ├── settings.js │ │ │ ├── users.js │ │ │ └── users │ │ │ │ ├── index.js │ │ │ │ ├── list.js │ │ │ │ └── view.js │ │ ├── application.js │ │ ├── contact-badgeyay.js │ │ ├── create-badges.js │ │ ├── edit-badge.js │ │ ├── faq.js │ │ ├── forgotpwd.js │ │ ├── index.js │ │ ├── login.js │ │ ├── my-badges.js │ │ ├── not-found-catch.js │ │ ├── not-found.js │ │ ├── reset │ │ │ └── password.js │ │ ├── settings.js │ │ ├── signup.js │ │ ├── sitemap.js │ │ ├── user-guide.js │ │ └── verify │ │ │ └── email.js │ ├── serializers │ │ ├── application.js │ │ ├── badge.js │ │ ├── csv-file.js │ │ ├── cust-img-file.js │ │ ├── def-image.js │ │ ├── image-upload.js │ │ ├── my-badges.js │ │ ├── reset-mail.js │ │ ├── text-data.js │ │ ├── user-signup.js │ │ └── user.js │ ├── services │ │ ├── auth-manager.js │ │ ├── auth-session.js │ │ └── firebase-service.js │ ├── styles │ │ ├── app.scss │ │ ├── partials │ │ │ ├── admin.scss │ │ │ ├── all.scss │ │ │ ├── application.scss │ │ │ ├── create-badge.scss │ │ │ ├── footer-main.scss │ │ │ ├── forgotpwd.scss │ │ │ ├── login.scss │ │ │ ├── my-badges.scss │ │ │ ├── my-profile.scss │ │ │ ├── nav-bar.scss │ │ │ ├── notifications.scss │ │ │ ├── overrides.scss │ │ │ ├── preview.scss │ │ │ ├── pricing.scss │ │ │ ├── reset-pass.scss │ │ │ ├── signup.scss │ │ │ ├── sitemap.scss │ │ │ ├── uploader.scss │ │ │ ├── user-guide.scss │ │ │ ├── verify-mail.scss │ │ │ └── welcome.scss │ │ └── vars.scss │ ├── templates │ │ ├── about.hbs │ │ ├── admin.hbs │ │ ├── admin │ │ │ ├── badges.hbs │ │ │ ├── badges │ │ │ │ └── list.hbs │ │ │ ├── content.hbs │ │ │ ├── content │ │ │ │ └── index.hbs │ │ │ ├── index.hbs │ │ │ ├── messages.hbs │ │ │ ├── modules.hbs │ │ │ ├── permissions.hbs │ │ │ ├── permissions │ │ │ │ └── system-roles.hbs │ │ │ ├── reports.hbs │ │ │ ├── reports │ │ │ │ └── list.hbs │ │ │ ├── settings.hbs │ │ │ ├── users.hbs │ │ │ └── users │ │ │ │ ├── list.hbs │ │ │ │ └── view.hbs │ │ ├── application.hbs │ │ ├── components │ │ │ ├── admin │ │ │ │ ├── deployment-comp.hbs │ │ │ │ ├── firebase-comp.hbs │ │ │ │ ├── pricing-comp.hbs │ │ │ │ ├── usage-stat-comp.hbs │ │ │ │ └── user-comp.hbs │ │ │ ├── background-component │ │ │ │ ├── color-bg-component.hbs │ │ │ │ ├── def-image-component.hbs │ │ │ │ ├── image-component.hbs │ │ │ │ └── logo-image-component.hbs │ │ │ ├── badge-component │ │ │ │ ├── badge-background.hbs │ │ │ │ ├── badge-size.hbs │ │ │ │ └── paper-size.hbs │ │ │ ├── badge-design.hbs │ │ │ ├── badge-name.hbs │ │ │ ├── badge-table.hbs │ │ │ ├── data-component.hbs │ │ │ ├── data-component │ │ │ │ ├── csv-component.hbs │ │ │ │ ├── name-component.hbs │ │ │ │ └── text-component.hbs │ │ │ ├── dimmer-loader.hbs │ │ │ ├── error-component │ │ │ │ ├── not-found.hbs │ │ │ │ └── server-error.hbs │ │ │ ├── footer-main.hbs │ │ │ ├── forgot-password.hbs │ │ │ ├── forms │ │ │ │ ├── image-upload.hbs │ │ │ │ ├── login-form.hbs │ │ │ │ ├── signup-form.hbs │ │ │ │ └── system-settings-form.hbs │ │ │ ├── modals │ │ │ │ ├── add-system-role-modal.hbs │ │ │ │ ├── cropper-modal.hbs │ │ │ │ └── modal-base.hbs │ │ │ ├── nav-bar.hbs │ │ │ ├── overlay-welcome.hbs │ │ │ ├── password-comp.hbs │ │ │ ├── pricing-component.hbs │ │ │ ├── tabbed-navigation.hbs │ │ │ ├── text-component │ │ │ │ ├── font-color.hbs │ │ │ │ └── font-size.hbs │ │ │ ├── user-card.hbs │ │ │ ├── user-component │ │ │ │ ├── my-badges.hbs │ │ │ │ ├── my-profile.hbs │ │ │ │ ├── preview.hbs │ │ │ │ ├── user-account.hbs │ │ │ │ ├── user-guide.hbs │ │ │ │ └── user-password.hbs │ │ │ ├── user-table.hbs │ │ │ ├── verify-mail.hbs │ │ │ └── welcome-header.hbs │ │ ├── contact-badgeyay.hbs │ │ ├── create-badges.hbs │ │ ├── error-component.hbs │ │ ├── faq.hbs │ │ ├── forgotpwd.hbs │ │ ├── index.hbs │ │ ├── login.hbs │ │ ├── my-badges.hbs │ │ ├── not-found-catch.hbs │ │ ├── not-found.hbs │ │ ├── reset │ │ │ └── password.hbs │ │ ├── settings.hbs │ │ ├── signup.hbs │ │ ├── sitemap.hbs │ │ ├── user-guide.hbs │ │ └── verify │ │ │ └── email.hbs │ ├── torii-adapters │ │ └── application.js │ └── utils │ │ ├── file.js │ │ └── form.js ├── config │ ├── deploy.js │ ├── environment.js │ └── targets.js ├── ember-cli-build.js ├── package.json ├── public │ ├── CNAME │ ├── assets │ │ └── js │ │ │ └── tablesort.js │ ├── images │ │ ├── Badgeyay-artwork.png │ │ ├── add_more.png │ │ ├── badge.png │ │ ├── badge_backgrounds │ │ │ ├── black_futuristic.png │ │ │ ├── blue_futuristic.png │ │ │ ├── cyan_futuristic.png │ │ │ ├── gray_futuristic.png │ │ │ ├── green_futuristic.png │ │ │ ├── red_futuristic.png │ │ │ ├── user_defined.png │ │ │ └── yellow_futuristic.png │ │ ├── blog.png │ │ ├── default_logo.png │ │ ├── empty.png │ │ ├── eye-16.png │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── landing.jpg │ │ └── pdf-icon.png │ └── robots.txt ├── scripts │ ├── gh_deploy.sh │ └── pr_deploy.sh ├── semantic.json ├── testem.js ├── tests │ ├── helpers │ │ ├── destroy-app.js │ │ ├── module-for-acceptance.js │ │ └── start-app.js │ ├── index.html │ ├── integration │ │ ├── components │ │ │ ├── admin │ │ │ │ ├── deployment-comp-test.js │ │ │ │ ├── pricing-comp-test.js │ │ │ │ ├── usage-stat-comp-test.js │ │ │ │ └── user-comp-test.js │ │ │ ├── background-component │ │ │ │ ├── color-bg-component-test.js │ │ │ │ ├── def-image-component-test.js │ │ │ │ ├── image-component-test.js │ │ │ │ └── logo-image-component-test.js │ │ │ ├── badge-component │ │ │ │ ├── badge-background.js │ │ │ │ ├── badge-size-test.js │ │ │ │ └── paper-size-test.js │ │ │ ├── badge-design-test.js │ │ │ ├── badge-name-test.js │ │ │ ├── contact-badgeyay-test.js │ │ │ ├── data-component-test.js │ │ │ ├── data-component │ │ │ │ ├── csv-component-test.js │ │ │ │ ├── name-component-test.js │ │ │ │ └── text-component-test.js │ │ │ ├── dimmer-loader-test.js │ │ │ ├── forms │ │ │ │ └── image-upload-test.js │ │ │ ├── overlay-welcome-test.js │ │ │ ├── pricing-component-test.js │ │ │ ├── tabbed-navigation-test.js │ │ │ ├── text-component │ │ │ │ ├── font-color-test.js │ │ │ │ └── font-size-test.js │ │ │ ├── user-component │ │ │ │ ├── preview-test.js │ │ │ │ ├── user-account-test.js │ │ │ │ └── user-password-test.js │ │ │ └── verify-mail-test.js │ │ └── helpers │ │ │ ├── def-images-test.js │ │ │ ├── first-cap-test.js │ │ │ ├── if-equal-test.js │ │ │ ├── init-cap-test.js │ │ │ └── rel-test.js │ ├── test-helper.js │ └── unit │ │ ├── adapters │ │ ├── admin-report-test.js │ │ ├── admin-stat-mail-test.js │ │ ├── admin-stat-user-test.js │ │ ├── admin-test.js │ │ ├── all-admin-badge-test.js │ │ ├── all-badge-test.js │ │ ├── all-user-test.js │ │ ├── badge-test.js │ │ ├── bg-color-test.js │ │ ├── create-admin-test.js │ │ ├── create-sale-test.js │ │ ├── csv-file-test.js │ │ ├── cust-img-file-test.js │ │ ├── def-image-test.js │ │ ├── def-image-upload-test.js │ │ ├── delete-admin-test.js │ │ ├── delete-sale-test.js │ │ ├── image-upload-test.js │ │ ├── login-token-test.js │ │ ├── module-test.js │ │ ├── my-badges-test.js │ │ ├── permission-test.js │ │ ├── profile-image-test.js │ │ ├── reset-mail-test.js │ │ ├── reset-password-test.js │ │ ├── reset-user-test.js │ │ ├── role-test.js │ │ ├── setting-test.js │ │ ├── social-content-test.js │ │ ├── text-data-test.js │ │ ├── user-signup-test.js │ │ ├── user-test.js │ │ ├── valid-token-test.js │ │ └── verify-mail-test.js │ │ ├── controllers │ │ ├── admin-test.js │ │ ├── admin │ │ │ ├── badges │ │ │ │ └── list-test.js │ │ │ ├── content │ │ │ │ └── index-test.js │ │ │ ├── modules-test.js │ │ │ ├── permissions │ │ │ │ └── system-roles-test.js │ │ │ ├── reports │ │ │ │ └── list-test.js │ │ │ ├── settings-test.js │ │ │ ├── users-test.js │ │ │ └── users │ │ │ │ └── list-test.js │ │ ├── create-badges-test.js │ │ ├── edit-badge-test.js │ │ ├── forgotpwd-test.js │ │ ├── login-test.js │ │ ├── logout-test.js │ │ ├── my-badges-test.js │ │ ├── my-profile-test.js │ │ ├── reset │ │ │ └── password-test.js │ │ ├── settings-test.js │ │ ├── signup-test.js │ │ └── verify │ │ │ └── email-test.js │ │ ├── models │ │ ├── admin-report-test.js │ │ ├── admin-stat-mail-test.js │ │ ├── admin-stat-user-test.js │ │ ├── admin-test.js │ │ ├── all-admin-badge-test.js │ │ ├── all-badge-test.js │ │ ├── all-user-test.js │ │ ├── badge-test.js │ │ ├── bg-color-test.js │ │ ├── create-admin-test.js │ │ ├── create-sale-test.js │ │ ├── csv-file-test.js │ │ ├── cust-img-file-test.js │ │ ├── def-image-test.js │ │ ├── def-image-upload-test.js │ │ ├── delete-admin-test.js │ │ ├── delete-sale-test.js │ │ ├── image-upload-test.js │ │ ├── login-token-test.js │ │ ├── module-test.js │ │ ├── my-badges-test.js │ │ ├── permission-test.js │ │ ├── profile-image-test.js │ │ ├── reset-mail-test.js │ │ ├── reset-password-test.js │ │ ├── reset-user-test.js │ │ ├── role-test.js │ │ ├── setting-test.js │ │ ├── social-content-test.js │ │ ├── text-data-test.js │ │ ├── user-signup-test.js │ │ ├── valid-token-test.js │ │ └── verify-mail-test.js │ │ ├── routes │ │ ├── admin-test.js │ │ ├── admin │ │ │ ├── badges-test.js │ │ │ ├── badges │ │ │ │ └── list-test.js │ │ │ ├── content-test.js │ │ │ ├── index-test.js │ │ │ ├── modules-test.js │ │ │ ├── permissions-test.js │ │ │ ├── permissions │ │ │ │ └── system-roles-test.js │ │ │ ├── reports-test.js │ │ │ ├── reports │ │ │ │ └── list-test.js │ │ │ ├── settings-test.js │ │ │ ├── users-test.js │ │ │ └── users │ │ │ │ ├── list-test.js │ │ │ │ └── view-test.js │ │ ├── contact-badgeyay-test.js │ │ ├── create-badges-test.js │ │ ├── edit-badge-test.js │ │ ├── faq-test.js │ │ ├── forgotpwd-test.js │ │ ├── index-test.js │ │ ├── login-test.js │ │ ├── my-badges-test.js │ │ ├── not-found-catch-test.js │ │ ├── not-found-test.js │ │ ├── reset │ │ │ └── password-test.js │ │ ├── settings-test.js │ │ ├── signup-test.js │ │ ├── sitemap-test.js │ │ ├── user-guide-test.js │ │ └── verify │ │ │ └── email-test.js │ │ ├── serializers │ │ ├── all-user-test.js │ │ ├── badge-test.js │ │ ├── csv-file-test.js │ │ ├── cust-img-file-test.js │ │ ├── def-image-test.js │ │ ├── image-upload-test.js │ │ ├── my-badges-test.js │ │ ├── reset-mail-test.js │ │ ├── text-data-test.js │ │ ├── user-signup-test.js │ │ └── user-test.js │ │ └── services │ │ ├── auth-session-test.js │ │ └── firebase-service-test.js ├── vendor │ └── .gitkeep └── yarn.lock ├── package-lock.json ├── requirements.txt ├── runtime.txt └── scripts ├── install-hook.py └── pre-push-hook.py /.env.example: -------------------------------------------------------------------------------- 1 | BADGEYAY_DEBUG=true 2 | BADGEYAY_ENV=LOCAL 3 | BADGEYAY_DATABASE_OWNER=tom 4 | BADGEYAY_DATABASE_PASSWORD=start 5 | BADGEYAY_DATABASE=badgeyay 6 | 7 | FIREBASE_DB_URL='https://badgeyay-195bf.firebaseio.com', 8 | FIREBASE_STORAGE_BUCKET='badgeyay-195bf.appspot.com' 9 | -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length = 150 3 | ignore = W191 4 | exclude = 5 | .git, 6 | __pycache__, 7 | api/migrations, 8 | site-packages 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Version_2.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Version 2.0 ISsue 3 | about: Create an issue related to v2.0 4 | title: '[V-2.0]' 5 | labels: V 2.0 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | 9 | 10 | **Describe the solution you'd like** 11 | 12 | 13 | **Describe alternatives you've considered** 14 | 15 | 16 | **Additional context** 17 | 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | badgeyay.code-workspace 3 | /*.csv# 4 | *.badges 5 | *.swp 6 | *.pyc 7 | *.log 8 | .env 9 | .vagrant/ 10 | venv/ 11 | .vscode/ 12 | badgeyay/ 13 | .coverage 14 | *.sublime-project 15 | *.sublime-workspace 16 | .DS_Store 17 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn --pythonpath api/ run:app 2 | -------------------------------------------------------------------------------- /Procfile.dev: -------------------------------------------------------------------------------- 1 | web: gunicorn --pythonpath api/ run:app 2 | node: npm --prefix frontend/ start 3 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BadgeYay-API", 3 | "description": "A fully functional REST API for badges generator using flask", 4 | "repository": "https://github.com/fossasia/badgeyay/api/", 5 | "keywords": [ 6 | "badgeyay", 7 | "fossasia", 8 | "flask" 9 | ], 10 | "buildpacks": [ 11 | { 12 | "url": "heroku/python" 13 | } 14 | ], 15 | "env" : { 16 | "SERVICE_ACCOUNT_JSON" : { 17 | "description": "The service-account.json from Firebase app.", 18 | "required": true 19 | }, 20 | "DATABASE_URL" : { 21 | "description": "URL for Heroku Postgres", 22 | "required": true 23 | } 24 | }, 25 | "addons": [ 26 | { 27 | "plan": "heroku-postgresql" 28 | } 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /autodeploy/command.py: -------------------------------------------------------------------------------- 1 | from subprocess import Popen, PIPE 2 | 3 | def execute(cwd, executable, *args): 4 | """ 5 | Executes command, return a tuple: 6 | returncode, output, error message 7 | """ 8 | command = [executable] + list(args) 9 | process = Popen(command, stdout=PIPE, stderr=PIPE, cwd=cwd) 10 | out, err = process.communicate() 11 | 12 | return process.returncode, str(out, 'utf-8'), str(err, 'utf-8') 13 | -------------------------------------------------------------------------------- /autodeploy/config.yml: -------------------------------------------------------------------------------- 1 | server: 2 | url: https://github.com/fossasia/badgeyay/api 3 | branch: development 4 | container: web 5 | frontend: 6 | url: https://github.com/fossasia/badgeyay/frontend 7 | branch: development 8 | -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | config/config.py 2 | config/ServiceAccountkey.json 3 | static/uploads 4 | static/temporary 5 | app.yaml 6 | *.pdf 7 | -------------------------------------------------------------------------------- /backend/README.md: -------------------------------------------------------------------------------- 1 | # Badgeyay Backend 2 | 3 | > **Badgeyay provide an interface to event organizers for generating badges of events from concerts to conferences and meet-ups.** 4 | 5 | Badgeyay is an awesome Badge generator with a simple web UI to add data and generate printable badges in a PDF. 6 | 7 | This directory contains the backend for badgeyay. 8 | [Installation instructions](../docs/backend/installation/README.md) 9 | -------------------------------------------------------------------------------- /backend/badge_backgrounds/black_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/black_futuristic.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/blue_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/blue_futuristic.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/cyan_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/cyan_futuristic.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/gray_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/gray_futuristic.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/green_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/green_futuristic.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/red_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/red_futuristic.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/user_defined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/user_defined.png -------------------------------------------------------------------------------- /backend/badge_backgrounds/yellow_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/badge_backgrounds/yellow_futuristic.png -------------------------------------------------------------------------------- /backend/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/config/__init__.py -------------------------------------------------------------------------------- /backend/config/app.example.yaml: -------------------------------------------------------------------------------- 1 | runtime: custom 2 | env: flex 3 | 4 | runtime_config: 5 | python_version: 3 6 | 7 | #[START env] 8 | env_variables: 9 | # Replace user, password, database, and instance connection name with the values obtained 10 | # when configuring your Cloud SQL instance. 11 | SQLALCHEMY_DATABASE_URI: >- 12 | postgresql+psycopg2://USER:PASSWORD@/DATABASE?host=/cloudsql/INSTANCE_CONNECTION_NAME 13 | #[END env] 14 | 15 | #[START cloudsql_settings] 16 | # Replace project and instance with the values obtained when configuring your 17 | # Cloud SQL instance. 18 | beta_settings: 19 | cloud_sql_instances: INSTANCE_CONNECTION_NAME 20 | -------------------------------------------------------------------------------- /backend/config/config.py: -------------------------------------------------------------------------------- 1 | from envparse import env 2 | 3 | env.read_envfile() 4 | # DEBUG variable 5 | DEBUG = env.bool('BADGEYAY_DEBUG', default=True) 6 | 7 | # Environment for working, can be LOCAL/PROD 8 | ENV = env.str('BADGEYAY_ENV', default='PROD') 9 | 10 | # Sample config for PostgreSQL Database 11 | POSTGRES = { 12 | 'user': env.str('BADGEYAY_DATABASE_OWNER', default='postgres'), 13 | 'pw': env.str('BADGEYAY_DATABASE_PASSWORD', default='postgres'), 14 | 'host': 'localhost', 15 | 'port': '5432', 16 | 'db': env.str('BADGEYAY_DATABASE', default='badgeyay'), 17 | 'secret': 'thisisaverysupersecretkeyforfossasiabadgeyay' 18 | } 19 | 20 | # Posts per page to be shown 21 | POSTS_PER_PAGE = 10 22 | 23 | admins = ['badgeyayofficial@gmail.com'] 24 | -------------------------------------------------------------------------------- /backend/config/dev_config.py: -------------------------------------------------------------------------------- 1 | # DEBUG variable 2 | DEBUG = True 3 | 4 | # Sample config for PostgreSQL Database 5 | POSTGRES = { 6 | 'user': '', 7 | 'pw': '', 8 | 'host': '', 9 | 'port': '', 10 | 'db': '', 11 | 'secret': '' 12 | } 13 | -------------------------------------------------------------------------------- /backend/config/urlConfig.py: -------------------------------------------------------------------------------- 1 | # Configuration variable for the application 2 | from . import config 3 | 4 | if config.DEBUG: 5 | BASE_URL = 'http://localhost:5000/' 6 | BASE_FRONTEND_URL = 'http://localhost:4200/' 7 | else: 8 | BASE_URL = 'http://badgeyay-api.herokuapp.com/' 9 | BASE_FRONTEND_URL = 'http://badgeyay.com/' 10 | -------------------------------------------------------------------------------- /backend/controllers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/controllers/__init__.py -------------------------------------------------------------------------------- /backend/controllers/errorHandlers.py: -------------------------------------------------------------------------------- 1 | from flask import Blueprint, jsonify 2 | from backend.utils.response import Response 3 | 4 | router = Blueprint('errorHandler', __name__) 5 | 6 | @router.app_errorhandler(404) 7 | def handle_404(err): 8 | return jsonify( 9 | Response(404).generateMessage( 10 | str(err))) 11 | 12 | @router.app_errorhandler(500) 13 | def handle_500(err): 14 | return jsonify( 15 | Response(500).generateMessage( 16 | str(err))) 17 | -------------------------------------------------------------------------------- /backend/db.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | 3 | db = SQLAlchemy() 4 | -------------------------------------------------------------------------------- /backend/helpers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/helpers/__init__.py -------------------------------------------------------------------------------- /backend/helpers/verifyPassword.py: -------------------------------------------------------------------------------- 1 | from werkzeug.security import check_password_hash 2 | 3 | def verifyPassword(user, password): 4 | return check_password_hash( 5 | user.password, 6 | password) 7 | -------------------------------------------------------------------------------- /backend/migrations/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /backend/migrations/script.py.mako: -------------------------------------------------------------------------------- 1 | """${message} 2 | 3 | Revision ID: ${up_revision} 4 | Revises: ${down_revision | comma,n} 5 | Create Date: ${create_date} 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | ${imports if imports else ""} 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = ${repr(up_revision)} 14 | down_revision = ${repr(down_revision)} 15 | branch_labels = ${repr(branch_labels)} 16 | depends_on = ${repr(depends_on)} 17 | 18 | 19 | def upgrade(): 20 | ${upgrades if upgrades else "pass"} 21 | 22 | 23 | def downgrade(): 24 | ${downgrades if downgrades else "pass"} 25 | -------------------------------------------------------------------------------- /backend/migrations/versions/44af135eb41b_.py: -------------------------------------------------------------------------------- 1 | """empty message 2 | 3 | Revision ID: 44af135eb41b 4 | Revises: 9f78f55cf7f3 5 | Create Date: 2018-07-25 15:35:42.573268 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | # revision identifiers, used by Alembic. 12 | revision = '44af135eb41b' 13 | down_revision = '9f78f55cf7f3' 14 | branch_labels = None 15 | depends_on = None 16 | 17 | def upgrade(): 18 | # ### commands auto generated by Alembic - please adjust! ### 19 | op.add_column('User', sa.Column('last_login_date', sa.DateTime(), nullable=True)) 20 | # ### end Alembic commands ### 21 | 22 | def downgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.drop_column('User', 'last_login_date') 25 | # ### end Alembic commands ### 26 | -------------------------------------------------------------------------------- /backend/migrations/versions/9f78f55cf7f3_.py: -------------------------------------------------------------------------------- 1 | """empty message 2 | 3 | Revision ID: 9f78f55cf7f3 4 | Revises: b6414a3cd355 5 | Create Date: 2018-07-20 16:30:18.437101 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | # revision identifiers, used by Alembic. 12 | revision = '9f78f55cf7f3' 13 | down_revision = 'b6414a3cd355' 14 | branch_labels = None 15 | depends_on = None 16 | 17 | def upgrade(): 18 | # ### commands auto generated by Alembic - please adjust! ### 19 | op.add_column('User', sa.Column('last_login_ip', sa.String(), nullable=True)) 20 | # ### end Alembic commands ### 21 | 22 | def downgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.drop_column('User', 'last_login_ip') 25 | # ### end Alembic commands ### 26 | -------------------------------------------------------------------------------- /backend/migrations/versions/b6414a3cd355_.py: -------------------------------------------------------------------------------- 1 | """empty message 2 | 3 | Revision ID: b6414a3cd355 4 | Revises: 90bcaf09b4eb 5 | Create Date: 2018-07-19 22:02:35.118302 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | # revision identifiers, used by Alembic. 12 | revision = 'b6414a3cd355' 13 | down_revision = '90bcaf09b4eb' 14 | branch_labels = None 15 | depends_on = None 16 | 17 | def upgrade(): 18 | # ### commands auto generated by Alembic - please adjust! ### 19 | op.add_column('Badges', sa.Column('deleted_at', sa.DateTime(), nullable=True)) 20 | # ### end Alembic commands ### 21 | 22 | def downgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.drop_column('Badges', 'deleted_at') 25 | # ### end Alembic commands ### 26 | -------------------------------------------------------------------------------- /backend/migrations/versions/cb411916be68_.py: -------------------------------------------------------------------------------- 1 | """empty message 2 | 3 | Revision ID: cb411916be68 4 | Revises: 2780e9c4144f 5 | Create Date: 2018-07-11 21:40:44.243565 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | # revision identifiers, used by Alembic. 12 | revision = 'cb411916be68' 13 | down_revision = '2780e9c4144f' 14 | branch_labels = None 15 | depends_on = None 16 | 17 | def upgrade(): 18 | # ### commands auto generated by Alembic - please adjust! ### 19 | op.add_column('Badges', sa.Column('badge_name', sa.String(length=100), nullable=True)) 20 | # ### end Alembic commands ### 21 | 22 | def downgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.drop_column('Badges', 'badge_name') 25 | # ### end Alembic commands ### 26 | -------------------------------------------------------------------------------- /backend/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/models/__init__.py -------------------------------------------------------------------------------- /backend/models/file.py: -------------------------------------------------------------------------------- 1 | import uuid 2 | from backend.db import db 3 | 4 | class File(db.Model): 5 | __tablename__ = 'File' 6 | 7 | id = db.Column(db.String(100)) 8 | filename = db.Column(db.String(100), nullable=False, primary_key=True) 9 | filetype = db.Column(db.String(100), nullable=False) 10 | user_id = db.Column(db.String(100), db.ForeignKey('User.id', ondelete='CASCADE')) 11 | 12 | def save_to_db(self): 13 | self.id = str(uuid.uuid4()) 14 | db.session.add(self) 15 | try: 16 | db.session.commit() 17 | except Exception as e: 18 | db.session.rollback() 19 | db.session.flush() 20 | print(e) 21 | -------------------------------------------------------------------------------- /backend/models/token.py: -------------------------------------------------------------------------------- 1 | from backend.db import db 2 | 3 | class ResetPasswordToken(db.Model): 4 | 5 | __tablename__ = 'Reset Password Token' 6 | 7 | id = db.Column(db.String, primary_key=True) 8 | token = db.Column(db.String, nullable=False) 9 | 10 | def __init__(self, uid, token): 11 | self.id = uid 12 | self.token = token 13 | 14 | def save_to_db(self): 15 | try: 16 | db.session.add(self) 17 | db.session.commit() 18 | except Exception as e: 19 | db.session.rollback() 20 | db.session.flush() 21 | print(e) 22 | -------------------------------------------------------------------------------- /backend/models/utils.py: -------------------------------------------------------------------------------- 1 | import uuid 2 | from backend.db import db 3 | 4 | class Utilities(db.Model): 5 | __tablename__ = 'Utilities' 6 | 7 | id = db.Column(db.String(100), primary_key=True) 8 | pricing = db.Column(db.Float) 9 | 10 | def save_to_db(self): 11 | self.id = str(uuid.uuid4()) 12 | db.session.add(self) 13 | try: 14 | db.session.commit() 15 | except Exception as e: 16 | db.session.rollback() 17 | db.session.flush() 18 | print(e) 19 | 20 | def set_pricing(): 21 | record = Utilities.query.first() 22 | if record is None: 23 | util = Utilities(pricing=0.00) 24 | util.save_to_db() 25 | -------------------------------------------------------------------------------- /backend/schemas/modules.py: -------------------------------------------------------------------------------- 1 | from marshmallow_jsonapi.flask import Schema 2 | from marshmallow_jsonapi import fields 3 | 4 | class ModuleSchema(Schema): 5 | class Meta: 6 | type_ = 'modules' 7 | 8 | id = fields.Integer(dump_only=True, as_string=True) 9 | ticketInclude = fields.Boolean(required=True) 10 | paymentInclude = fields.Boolean(required=True) 11 | donationInclude = fields.Boolean(required=True) 12 | -------------------------------------------------------------------------------- /backend/schemas/operation.py: -------------------------------------------------------------------------------- 1 | from marshmallow_jsonapi.flask import Schema 2 | from marshmallow_jsonapi import fields 3 | 4 | class ResetPasswordOperation(Schema): 5 | class Meta: 6 | type_ = 'reset-passwords' 7 | 8 | id = fields.Str(required=True, dump_only=True) 9 | status = fields.Str(required=True) 10 | 11 | class EmailVerificationOperation(Schema): 12 | class Meta: 13 | type_ = 'verify-mails' 14 | 15 | id = fields.Str(required=True, dump_only=True) 16 | status = fields.Str(required=True) 17 | 18 | class StripePaymentSchema(Schema): 19 | class Meta: 20 | type_ = 'stripe-payment' 21 | 22 | id = fields.Str(required=True, dump_only=True) 23 | status = fields.Str(required=True) 24 | -------------------------------------------------------------------------------- /backend/schemas/permissions.py: -------------------------------------------------------------------------------- 1 | from marshmallow_jsonapi.flask import Schema 2 | from marshmallow_jsonapi import fields 3 | 4 | class ModifyPermissionsIncoming(Schema): 5 | class Meta: 6 | type_ = 'modify-permissions' 7 | 8 | id = fields.Str(required=True, dump_only=True) 9 | uid = fields.Str(required=True) 10 | isUser = fields.Boolean(default=True) 11 | isAdmin = fields.Boolean(default=False) 12 | isSales = fields.Boolean(default=False) 13 | 14 | class ModifyPermissionsDone(Schema): 15 | class Meta: 16 | type_ = 'modification-done' 17 | 18 | id = fields.Str(required=True, dump_only=True) 19 | isUser = fields.Boolean(dump_only=True) 20 | isAdmin = fields.Boolean(dump_only=True) 21 | isSales = fields.Boolean(dump_only=True) 22 | -------------------------------------------------------------------------------- /backend/schemas/utils.py: -------------------------------------------------------------------------------- 1 | from marshmallow_jsonapi.flask import Schema 2 | from marshmallow_jsonapi import fields 3 | 4 | class SetPricingSchema(Schema): 5 | class Meta: 6 | type_ = 'set-pricing' 7 | kwargs = {'id': ''} 8 | 9 | id = fields.Str(required=True, dump_only=True) 10 | pricing = fields.Float(required=True) 11 | 12 | class ReturnSetPricing(Schema): 13 | class Meta: 14 | type_ = 'pricing-done' 15 | kwargs = {'id': ''} 16 | 17 | id = fields.Str(required=True, dump_only=True) 18 | pricing = fields.Float(dump_only=-True) 19 | status = fields.Str(dump_only=True) 20 | message = fields.Str(dump_only=True) 21 | -------------------------------------------------------------------------------- /backend/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/backend/utils/__init__.py -------------------------------------------------------------------------------- /backend/utils/errors.py: -------------------------------------------------------------------------------- 1 | from flask import make_response, jsonify 2 | 3 | class ErrorResponse(): 4 | 5 | """ 6 | Parent ErrorResponse class for handling json-api compliant errors 7 | """ 8 | 9 | def __init__(self, message, status_code, content_type): 10 | self.message = message 11 | self.status_code = status_code 12 | self.content_type = content_type 13 | 14 | def respond(self): 15 | """ 16 | :return: a jsonapi compliant response object 17 | """ 18 | return make_response(jsonify(self.message), self.status_code, self.content_type) 19 | -------------------------------------------------------------------------------- /backend/utils/firebaseUploader.py: -------------------------------------------------------------------------------- 1 | from firebase_admin import storage 2 | 3 | def fileUploader(file_path, blob_path): 4 | bucket = storage.bucket() 5 | fileUploaderBlob = bucket.blob(blob_path) 6 | try: 7 | with open(file_path, 'rb') as file_: 8 | fileUploaderBlob.upload_from_file(file_) 9 | except Exception as e: 10 | print(e) 11 | fileUploaderBlob.make_public() 12 | return fileUploaderBlob.public_url 13 | 14 | def deleteFile(blob_path): 15 | bucket = storage.bucket() 16 | fileDeleteBlob = bucket.blob(blob_path) 17 | try: 18 | fileDeleteBlob.delete() 19 | except Exception as e: 20 | print(e) 21 | -------------------------------------------------------------------------------- /cloud-functions/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "staging": "badgeyay-195bf" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /cloud-functions/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "predeploy": [ 4 | "npm --prefix \"$RESOURCE_DIR\" run lint" 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /cloud-functions/functions/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | config/clientKey.json 3 | config/serviceKey.json 4 | -------------------------------------------------------------------------------- /cloud-functions/functions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "functions", 3 | "description": "Cloud Functions for Firebase", 4 | "scripts": { 5 | "lint": "eslint .", 6 | "serve": "firebase serve --only functions", 7 | "shell": "firebase functions:shell", 8 | "start": "npm run shell", 9 | "deploy": "firebase deploy --only functions", 10 | "logs": "firebase functions:log" 11 | }, 12 | "dependencies": { 13 | "crypto": "^1.0.1", 14 | "firebase": "^5.3.0", 15 | "firebase-admin": "^5.13.1", 16 | "firebase-functions": "^2.0.2", 17 | "moment": "^2.22.2", 18 | "nodemailer": "^4.6.7" 19 | }, 20 | "devDependencies": { 21 | "eslint": "^4.19.1", 22 | "eslint-plugin-promise": "^3.8.0" 23 | }, 24 | "private": true 25 | } 26 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | notify: 3 | require_ci_to_pass: yes 4 | 5 | coverage: 6 | precision: 2 7 | round: down 8 | range: "70...100" 9 | 10 | status: 11 | project: yes 12 | patch: yes 13 | changes: no 14 | 15 | comment: 16 | layout: "reach, diff, flags, files, footer" 17 | behavior: default 18 | require_changes: no 19 | -------------------------------------------------------------------------------- /docs/backend/installation/aws/aws1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/docs/backend/installation/aws/aws1.png -------------------------------------------------------------------------------- /docs/backend/installation/aws/aws2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/docs/backend/installation/aws/aws2.png -------------------------------------------------------------------------------- /docs/backend/installation/aws/aws3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/docs/backend/installation/aws/aws3.png -------------------------------------------------------------------------------- /docs/backend/installation/aws/aws4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/docs/backend/installation/aws/aws4.png -------------------------------------------------------------------------------- /docs/backend/installation/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/docs/backend/installation/demo.gif -------------------------------------------------------------------------------- /docs/frontend/installation/README.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | Badgeyay frontend can be easily deployed on a variety of platforms. Currently it can be deployed in following ways. 4 | 5 | 1. [Local Installation](local.md) 6 | 7 | 2. [Deployment on Heroku](heroku.md) 8 | 9 | 3. [Deployment on Kubernetes](kubernetes.md) 10 | 11 | ## Further Reading / Useful Links 12 | 13 | * [Heroku Ember.js Buildpack](https://github.com/heroku/heroku-buildpack-emberjs) 14 | * [ember.js](https://emberjs.com/) 15 | * [ember-cli](https://ember-cli.com/) 16 | * Development Browser Extensions 17 | * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) 18 | * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/) 19 | -------------------------------------------------------------------------------- /frontend/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | jsconfig.json 4 | 5 | # compiled output 6 | dist 7 | tmp 8 | 9 | # dependencies 10 | node_modules 11 | bower_components 12 | 13 | # misc 14 | .sass-cache 15 | connect.lock 16 | coverage/* 17 | libpeerconnection.log 18 | npm-debug.log* 19 | yarn-error.log 20 | testem.log 21 | yarn.lock 22 | 23 | # ember-try 24 | .node_modules.ember-try/ 25 | bower.json.ember-try 26 | package.json.ember-try 27 | 28 | /semantic/* 29 | !/semantic/src/site/* 30 | !/semantic/src/theme.config 31 | -------------------------------------------------------------------------------- /frontend/.template-lintrc.js: -------------------------------------------------------------------------------- 1 | /* jshint node:true */ 2 | 'use strict'; 3 | 4 | module.exports = { 5 | extends: 'recommended', 6 | rules: { 7 | 'no-nested-interactive': { 8 | ignoredTags: ['label'] // Allow label tag inside a or any other interactive element 9 | } 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /frontend/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /frontend/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8.9.4 2 | 3 | WORKDIR /usr/src/app 4 | 5 | COPY package*.json ./ 6 | 7 | RUN docker -d & 8 | RUN npm config set strict-ssl false 9 | RUN apt-get update 10 | RUN apt-get install -y nodejs 11 | RUN npm cache verify 12 | RUN npm install -g -D ember-cli 13 | RUN npm config set registry=https://registry.npmjs.com/ 14 | RUN npm install -D 15 | 16 | COPY . . 17 | 18 | EXPOSE 4200 19 | 20 | CMD ["ember", "serve"] 21 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # Badgeyay Frontend 2 | 3 | > **Badgeyay provide an interface to event organizers for generating badges of events from concerts to conferences and meet-ups.** 4 | 5 | Badgeyay is a Badge generator with a simple web UI to add data and generate printable badges in a PDF. 6 | 7 | This directory contains the frontend for badgeyay. 8 | 9 | > Note to mobile users: On google chrome of mobile device, you need to **disable data saver** option in settings to open the [website](http://badgeyay.com/). Try clearing cache and cookies if the problem still persists. 10 | 11 | [Installation instructions](../docs/frontend/installation/README.md) 12 | -------------------------------------------------------------------------------- /frontend/app/adapters/admin-report.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/admin-report'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/admin-stat-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/admin-stat-mail'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/admin-stat-user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/all-user'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/admin.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { APP } = ENV; 5 | const { JSONAPIAdapter } = DS; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'admin/all-admin'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/all-admin-badge.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/all-badge-detail'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/all-badge.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/all-badge'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/all-user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/show_all_users'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/application.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import Ember from 'ember'; 3 | import { inject as service } from '@ember/service'; 4 | 5 | const { JSONAPIAdapter } = DS; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | notifications: service('notification-messages'), 9 | 10 | isInvalid() { 11 | this.get('notifications').clearAll(); 12 | this.get('notifications').error('An unexpected error occurred. Please try again later.', { 13 | autoClear : true, 14 | clearDuration : 1500 15 | }); 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/app/adapters/badge.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType: () => { 17 | return 'api/generate_badges'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/bg-color.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType: () => { 17 | return 'api/upload/background_color'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/create-admin.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/register_admin'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/create-sale.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/register_sales'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/csv-file.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { RESTAdapter } = DS; 8 | 9 | export default RESTAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'api/upload/file'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/cust-img-file.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType: () => { 17 | return 'api/upload/image'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/def-image-upload.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'api/upload/upload_default'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/def-image.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType: () => { 17 | return 'api/default_images'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/delete-admin.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/delete-admin'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/delete-sale.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/delete-sales'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/image-upload.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType: () => { 17 | return 'api/upload/image'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/login-token.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { JSONAPIAdapter } = DS; 5 | const { APP } = ENV; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'user/login'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/message.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/messages'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/module.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/all-modules'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/my-badges.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType() { 17 | return 'api/get_badges'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/permission.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { APP } = ENV; 5 | const { JSONAPIAdapter } = DS; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'user/permission'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/profile-image.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { JSONAPIAdapter } = DS; 7 | const { APP } = ENV; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'update/profileImage'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/reset-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { JSONAPIAdapter } = DS; 5 | const { APP } = ENV; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.resetFunction, 9 | pathForType : () => { 10 | return ''; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/reset-password.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { JSONAPIAdapter } = DS; 5 | const { APP } = ENV; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'change/password'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/reset-user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { JSONAPIAdapter } = DS; 5 | const { APP } = ENV; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'reset/token'; 11 | } 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/app/adapters/role.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/all-role'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/setting.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | const { JSONAPIAdapter } = DS; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | loginToken : service('auth-session'), 12 | headers : computed('loginToken.authToken', function() { 13 | return { 14 | 'x-access-token': this.get('loginToken.sessionToken') 15 | }; 16 | }), 17 | pathForType: () => { 18 | return 'admin/settings'; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/adapters/social-content.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { APP } = ENV; 5 | const { JSONAPIAdapter } = DS; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'admin/social-media'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/text-data.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { APP } = ENV; 7 | 8 | export default ApplicationAdapter.extend({ 9 | host : APP.backLink, 10 | loginToken : service('auth-session'), 11 | headers : computed('loginToken.authToken', function() { 12 | return { 13 | 'x-access-token': this.get('loginToken.sessionToken') 14 | }; 15 | }), 16 | pathForType: () => { 17 | return 'api/upload/manual_data'; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/adapters/user-signup.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { APP } = ENV; 5 | const { JSONAPIAdapter } = DS; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'user/register'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { APP } = ENV; 5 | const { JSONAPIAdapter } = DS; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'user/register'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/adapters/valid-token.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | import { computed } from '@ember/object'; 4 | import { inject as service } from '@ember/service'; 5 | 6 | const { JSONAPIAdapter } = DS; 7 | const { APP } = ENV; 8 | 9 | export default JSONAPIAdapter.extend({ 10 | host : APP.backLink, 11 | pathForType : () => { 12 | return 'validate/token'; 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/app/adapters/verify-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import ENV from '../config/environment'; 3 | 4 | const { JSONAPIAdapter } = DS; 5 | const { APP } = ENV; 6 | 7 | export default JSONAPIAdapter.extend({ 8 | host : APP.backLink, 9 | pathForType : () => { 10 | return 'validate/email'; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from './config/environment'; 5 | const { Application } = Ember; 6 | 7 | let App; 8 | 9 | App = Application.extend({ 10 | modulePrefix : config.modulePrefix, 11 | podModulePrefix : config.podModulePrefix, 12 | Resolver 13 | }); 14 | 15 | loadInitializers(App, config.modulePrefix); 16 | 17 | export default App; 18 | -------------------------------------------------------------------------------- /frontend/app/authorizers/oauth2.js: -------------------------------------------------------------------------------- 1 | import OAuth2Bearer from 'ember-simple-auth/authorizers/oauth2-bearer'; 2 | 3 | export default OAuth2Bearer.extend(); 4 | -------------------------------------------------------------------------------- /frontend/app/components/admin/deployment-comp.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/admin/pricing-comp.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/admin/usage-stat-comp.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/admin/user-comp.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/background-component/color-bg-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this.defValue = ''; 6 | this._super(...arguments); 7 | }, 8 | focusOut() { 9 | this.get('sendDefColor')(this.get('defColor')); 10 | } 11 | }); 12 | 13 | -------------------------------------------------------------------------------- /frontend/app/components/background-component/def-image-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | listview: false, 5 | init() { 6 | this.fingerPrint = window.ASSET_FINGERPRINT_HASH; 7 | this._super(...arguments); 8 | }, 9 | click() { 10 | let imageId = this.get('image'); 11 | if (imageId !== undefined) { 12 | this.get('sendDefImage')(imageId); 13 | } 14 | }, 15 | actions: { 16 | change() { 17 | this.toggleProperty('listview'); 18 | } 19 | } 20 | }); 21 | 22 | -------------------------------------------------------------------------------- /frontend/app/components/background-component/image-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | import { computed } from '@ember/object'; 3 | 4 | export default Component.extend({ 5 | init() { 6 | this._super(...arguments); 7 | }, 8 | 9 | imageId: computed('idx', function() { 10 | return this.get('badge_back' + this.get('idx')); 11 | }), 12 | 13 | actions: { 14 | mutateCustomImg(value) { 15 | this.get('mutateCustomImg')(value); 16 | } 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /frontend/app/components/background-component/logo-image-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/components/badge-component/badge-size.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | actions: { 5 | mutateBadgeSize(value) { 6 | this.get('sendBadgeSize')(value); 7 | } 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/components/badge-component/paper-size.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | }, 7 | 8 | actions: { 9 | mutatePaperSize(value) { 10 | this.get('sendPaperSize')(value); 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/app/components/contact-badgeyay.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/data-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/components/data-component/csv-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | }, 7 | actions: { 8 | 9 | encodeCSV(event) { 10 | const reader = new FileReader(); 11 | const { target } = event; 12 | const { files } = target; 13 | const [file] = files; 14 | const _this = this; 15 | 16 | reader.onload = () => { 17 | _this.get('sendCSV')(reader.result); 18 | }; 19 | 20 | reader.readAsDataURL(file); 21 | } 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /frontend/app/components/data-component/name-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | }, 7 | keyUp() { 8 | this.get('sendName')(this.get('formNameData')); 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/components/data-component/text-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | }, 7 | keyUp() { 8 | this.get('sendText')(this.get('formData')); 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/components/dimmer-loader.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/error-component/not-found.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/error-component/server-error.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/footer-main.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/forgot-password.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | }, 7 | actions: { 8 | sendResetMail() { 9 | this.get('sendResetMail')(this.email); 10 | } 11 | }, 12 | didRender() { 13 | this.$('.ui.fluid.form') 14 | .form({ 15 | inline : true, 16 | delay : false, 17 | fields : { 18 | email: { 19 | identifier : 'email', 20 | rules : [ 21 | { 22 | type : 'email', 23 | prompt : 'Please enter a valid email address' 24 | } 25 | ] 26 | } 27 | } 28 | }); 29 | } 30 | }); 31 | -------------------------------------------------------------------------------- /frontend/app/components/forms/system-settings-form.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | actions: { 5 | submit() { 6 | this.get('submitForm')(); 7 | } 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/components/nav-bar.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | import { inject as service } from '@ember/service'; 3 | 4 | export default Component.extend({ 5 | notifications: service('notification-messages'), 6 | 7 | init() { 8 | this._super(...arguments); 9 | }, 10 | 11 | actions: { 12 | logOut() { 13 | this.get('logOut')(); 14 | }, 15 | loginToContinue() { 16 | this.get('notifications').clearAll(); 17 | this.get('notifications').error('Please Login to continue', { 18 | autoClear : true, 19 | clearDuration : 1500 20 | }); 21 | } 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /frontend/app/components/overlay-welcome.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this.visibility = 'visible'; 6 | this._super(...arguments); 7 | }, 8 | actions: { 9 | dismissOverlay() { 10 | this.set('visibility', 'none'); 11 | this.get('removeFTL')(); 12 | } 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/app/components/pricing-component.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/text-component/font-color.js: -------------------------------------------------------------------------------- 1 | 2 | import Component from '@ember/component'; 3 | 4 | export default Component.extend({ 5 | init() { 6 | this.font_color_1 = ''; 7 | this.font_color_2 = ''; 8 | 9 | this.font_color_3 = ''; 10 | 11 | this.font_color_4 = ''; 12 | 13 | this.font_color_5 = ''; 14 | 15 | this._super(...arguments); 16 | } 17 | }); -------------------------------------------------------------------------------- /frontend/app/components/user-card.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/user-component/preview.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this.fingerPrint = window.ASSET_FINGERPRINT_HASH; 6 | this._super(...arguments); 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/components/user-component/user-account.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | init() { 5 | this._super(...arguments); 6 | }, 7 | actions: { 8 | updateUserName() { 9 | this.get('sendUserName')(); 10 | } 11 | }, 12 | 13 | didRender() { 14 | this.$('.ui.form') 15 | .form({ 16 | inline : true, 17 | delay : false, 18 | fields : { 19 | username: { 20 | identifier : 'profileName', 21 | rules : [ 22 | { 23 | type : 'empty', 24 | prompt : 'Please enter a valid username' 25 | } 26 | ] 27 | } 28 | } 29 | }); 30 | } 31 | }); 32 | -------------------------------------------------------------------------------- /frontend/app/components/user-component/user-guide.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/verify-mail.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/components/welcome-header.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | import { inject as service } from '@ember/service'; 3 | 4 | export default Component.extend({ 5 | classNames : ['welcome-header', 'mobile', 'text', 'centered'], 6 | notifications : service('notification-messages'), 7 | 8 | init() { 9 | this._super(...arguments); 10 | }, 11 | 12 | actions: { 13 | loginToContinue() { 14 | this.get('notifications').clearAll(); 15 | this.get('notifications').error('Please Login to continue', { 16 | autoClear : true, 17 | clearDuration : 1500 18 | }); 19 | } 20 | } 21 | }); 22 | -------------------------------------------------------------------------------- /frontend/app/controllers/admin/badges.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default Controller.extend({ 4 | actions: { 5 | findBadges() { 6 | var userTerm = this.get('user'); 7 | this.transitionToRoute('admin.badges.list', userTerm); 8 | } 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/controllers/admin/users.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default Controller.extend({ 4 | actions: { 5 | findUser() { 6 | let email = this.get('userEmail'); 7 | this.transitionToRoute('admin.users.list', email); 8 | } 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/controllers/logout.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | import Controller from '@ember/controller'; 4 | 5 | const { inject } = Ember; 6 | 7 | export default Controller.extend({ 8 | session : inject.service(), 9 | notifications : inject.service('notification-messages'), 10 | beforeModel() { 11 | return this.get('session').fetch().catch(function() {}); 12 | }, 13 | actions: { 14 | logOut() { 15 | this.get('session').close(); 16 | this.transitionToRoute('/'); 17 | this.get('notifications').warning('Log Out Successful', { 18 | autoClear : true, 19 | clearDuration : 1500 20 | }); 21 | } 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /frontend/app/controllers/verify/email.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default Controller.extend({ 4 | queryParams : ['id'], 5 | id : null 6 | }); 7 | -------------------------------------------------------------------------------- /frontend/app/helpers/def-images.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function defImages(params) { 4 | var [imageName] = params; 5 | imageName = imageName.split('_'); 6 | for (var i = imageName.length - 1; i >= 0; i--) { 7 | imageName[i] = imageName[i].charAt(0).toUpperCase() + imageName[i].slice(1); 8 | } 9 | return imageName.join(' '); 10 | } 11 | 12 | export default helper(defImages); 13 | -------------------------------------------------------------------------------- /frontend/app/helpers/extract-role.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function extractRole(user) { 4 | user = user[0]; 5 | if (user.isAdmin) { 6 | return 'Admin'; 7 | } else if (user.isSales) { 8 | return 'Sales'; 9 | } else { 10 | return 'User'; 11 | } 12 | } 13 | 14 | export default helper(extractRole); 15 | -------------------------------------------------------------------------------- /frontend/app/helpers/extract-time-stamp.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function extractTimeStamp(date) { 4 | return Math.floor((new Date(date)).getTime() / 100); 5 | } 6 | 7 | export default helper(extractTimeStamp); 8 | -------------------------------------------------------------------------------- /frontend/app/helpers/first-cap.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function firstCap(str) { 4 | return str[0].charAt(0).toUpperCase() + str[0].slice(1); 5 | } 6 | 7 | export default helper(firstCap); 8 | -------------------------------------------------------------------------------- /frontend/app/helpers/if-equal.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function ifEqual(params) { 4 | let [arg1, arg2] = params; 5 | return arg1 === arg2; 6 | } 7 | 8 | export default helper(ifEqual); 9 | -------------------------------------------------------------------------------- /frontend/app/helpers/init-cap.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function initCap(str) { 4 | var words = str[0].toLowerCase().split(' '); 5 | for (var i = 0; i < words.length; i++) { 6 | var letters = words[i].split(''); 7 | letters[0] = letters[0].toUpperCase(); 8 | words[i] = letters.join(''); 9 | } 10 | return words.join(' '); 11 | } 12 | 13 | export default helper(initCap); 14 | -------------------------------------------------------------------------------- /frontend/app/helpers/rel.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function rel(params) { 4 | var [font_size] = params; 5 | var iFont = parseInt(font_size); 6 | if (iFont <= 10) { 7 | return (iFont * 2.7).toString(); 8 | } 9 | return (iFont * 2.15).toString(); 10 | } 11 | 12 | export default helper(rel); 13 | -------------------------------------------------------------------------------- /frontend/app/helpers/sanitizeDate.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function sanitizeDate(date) { 4 | return new Date(date).toLocaleString(); 5 | } 6 | 7 | export default helper(sanitizeDate); 8 | -------------------------------------------------------------------------------- /frontend/app/models/admin-report.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | mailSentCount : attr('string'), 7 | badgeCount : attr('string'), 8 | userCreationCount : attr('string'), 9 | userDeletionCount : attr('string'), 10 | badgeDeletionCount : attr('string') 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/app/models/admin-stat-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | lastDayCount : attr('string'), 7 | lastThreeDays : attr('string'), 8 | lastSevenDays : attr('string'), 9 | lastMonth : attr('string') 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/models/admin-stat-user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import { computed } from '@ember/object'; 3 | 4 | const { Model, attr } = DS; 5 | 6 | export default Model.extend({ 7 | superAdmin : attr('number'), 8 | registered : attr('number'), 9 | total : computed('superAdmin', 'registered', function() { 10 | return this.get('superAdmin') + this.get('registered'); 11 | }) 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/models/admin.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | username : attr('string'), 7 | email : attr('string'), 8 | created_at : attr('date') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/all-admin-badge.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | image : attr('string'), 7 | csv : attr('string'), 8 | text_colour : attr('string'), 9 | badge_size : attr('string'), 10 | badge_name : attr('string'), 11 | download_link : attr('string'), 12 | created_at : attr('date'), 13 | user_id : attr('string'), 14 | username : attr('string'), 15 | deleted_at : attr('date') 16 | }); 17 | -------------------------------------------------------------------------------- /frontend/app/models/all-badge.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | cnt: attr('string') 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/models/all-user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | username : attr('string'), 7 | email : attr('string'), 8 | photoURL : attr('string'), 9 | created_at : attr('date'), 10 | password : attr('string'), 11 | deleted_at : attr('date'), 12 | lastLoginIp : attr('string'), 13 | lastLoginDate : attr('string'), 14 | 15 | // Permissions 16 | isAdmin : attr('boolean'), 17 | isSales : attr('boolean'), 18 | isUser : attr('boolean') 19 | }); 20 | -------------------------------------------------------------------------------- /frontend/app/models/bg-color.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | bg_color : attr('string'), 8 | filename : attr('string') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/create-admin.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | email : attr('string'), 7 | adminStat : attr('boolean') 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/models/create-sale.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | email : attr('string'), 7 | salesStat : attr('boolean') 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/models/csv-file.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | csvFile : attr('string'), 8 | extension : attr('string'), 9 | filename : attr('string') 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/models/cust-img-file.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | imageData : attr('string'), 8 | extension : attr('string'), 9 | filename : attr('string') 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/models/def-image-upload.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | defaultImage : attr('string'), 8 | filename : attr('string') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/def-image.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | name : attr('string'), 7 | filename : attr('string') 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/models/delete-admin.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | email : attr('string'), 7 | siteAdmin : attr('boolean') 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/models/delete-sale.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | email: attr('string') 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/models/image-upload.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | imageData : attr('string'), 8 | extension : attr('string'), 9 | filename : attr('string') 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/models/login-token.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | token: attr('string') 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/models/message.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | Description : attr('string'), 7 | Subject : attr('string') 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/models/module.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | ticketInclude : attr('boolean'), 7 | paymentInclude : attr('boolean'), 8 | donationInclude : attr('boolean') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/my-badges.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | badge_size : attr('string'), 7 | csv : attr('string'), 8 | download_link : attr('string'), 9 | image : attr('string'), 10 | text_color : attr('string'), 11 | image_link : attr('string'), 12 | badge_name : attr('string') 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/app/models/permission.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | isUser : attr('boolean'), 7 | isAdmin : attr('boolean'), 8 | isSales : attr('boolean') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/profile-image.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | image : attr('string'), 8 | extension : attr('string'), 9 | photoURL : attr('string') 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/models/reset-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | status: attr('number') 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/models/reset-password.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | token : attr('string'), 7 | pwd : attr('string'), 8 | status : attr('string') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/reset-user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | email : attr('string'), 7 | token : attr('string') 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/models/role.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | username : attr('string'), 7 | email : attr('string'), 8 | created_at : attr('date') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/setting.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | appEnvironment : attr('string'), 7 | appName : attr('string'), 8 | secretKey : attr('string'), 9 | firebaseStorageBucket : attr('string'), 10 | firebaseDatabaseURL : attr('string'), 11 | fromMail : attr('string'), 12 | sendGridApiKey : attr('string') 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/app/models/social-content.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | description : attr('string'), 7 | link : attr('string'), 8 | icon : attr('string') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/text-data.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | manual_data : attr('string'), 8 | time : attr('date'), 9 | filename : attr('string') 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/models/user-signup.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | username : attr('string'), 7 | email : attr('string'), 8 | password : attr('string') 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/models/user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | uid : attr('string'), 7 | username : attr('string'), 8 | password : attr('string'), 9 | email : attr('string'), 10 | photoURL : attr('string'), 11 | ftl : attr('boolean') 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/models/valid-token.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | valid: attr('boolean') 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/models/verify-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { Model, attr } = DS; 4 | 5 | export default Model.extend({ 6 | status: attr('string') 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /frontend/app/routes/about.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | import ENV from '../config/environment'; 3 | 4 | export default Route.extend({ 5 | model() { 6 | return ENV.badgeyaySupportMail; 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/app/routes/admin.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | import Ember from 'ember'; 3 | 4 | const { inject, RSVP, set } = Ember; 5 | 6 | export default Route.extend({ 7 | templateName : '', 8 | authSession : inject.service('auth-session'), 9 | beforeModel(transition) { 10 | if (this.get('authSession.permissions.isAdmin')) { 11 | this.set('templateName', ''); 12 | } else { 13 | this.set('templateName', 'not-found'); 14 | } 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/badges.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/badges/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | templateName: 'admin/badges/list', 5 | beforeModel() { 6 | this._super(...arguments); 7 | this.transitionTo('admin.badges.list', 'all'); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/content.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/content/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model() { 5 | return this.get('store').findAll('social-content'); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | import Ember from 'ember'; 3 | 4 | const { inject, RSVP, set } = Ember; 5 | 6 | export default Route.extend({ 7 | authSession: inject.service('auth-session'), 8 | beforeModel() { 9 | if (this.get('authSession.permissions.isAdmin') === false) { 10 | this.transitionTo('index'); 11 | } 12 | }, 13 | async model() { 14 | return { 15 | allBadge : await this.get('store').queryRecord('all-badge', {}), 16 | users : await this.get('store').queryRecord('admin-stat-user', {}), 17 | mails : await this.get('store').queryRecord('admin-stat-mail', {}) 18 | }; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/messages.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model() { 5 | return this.get('store').query('message', {}); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/modules.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model() { 5 | return this.get('store').queryRecord('module', {}); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/permissions.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/permissions/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | beforeModel() { 5 | return this.transitionTo('admin.permissions.system-roles'); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/permissions/system-roles.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | async model() { 5 | return { 6 | 'admins' : await this.get('store').query('role', { class: 'admin' }), 7 | 'sales' : await this.get('store').query('role', { class: 'sales' }) 8 | }; 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/reports.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/reports/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | templateName: 'admin/reports/list', 5 | beforeModel() { 6 | this._super(...arguments); 7 | this.transitionTo('admin.reports.list'); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/reports/list.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | import Ember from 'ember'; 3 | 4 | const { set } = Ember; 5 | 6 | export default Route.extend({ 7 | beforeModel(transition) { 8 | this._super(...arguments); 9 | }, 10 | 11 | model(params) { 12 | let filter = {}; 13 | filter.page = params.page; 14 | return this.get('store').query('admin-report', filter); 15 | }, 16 | 17 | setupController(controller, model) { 18 | this._super(...arguments); 19 | set(controller, 'reports', model); 20 | if (model.length < 9) { 21 | set(controller, 'allow_prev', false); 22 | set(controller, 'allow_next', false); 23 | set(controller, 'allow', false); 24 | } 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/settings.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model() { 5 | return this.get('store').queryRecord('setting', { 6 | filter: 'latest' 7 | }); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/users.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | setupController() { 5 | this.set('userEmail', ''); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/users/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | templateName: 'admin/users/list', 5 | beforeModel() { 6 | this._super(...arguments); 7 | this.transitionTo('admin.users.list', 'active'); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/routes/admin/users/view.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/contact-badgeyay.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model() { 5 | return this.get('store').findAll('social-content'); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/faq.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/forgotpwd.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/login.js: -------------------------------------------------------------------------------- 1 | /* jshint strict:false */ 2 | 3 | import Route from '@ember/routing/route'; 4 | 5 | export default Route.extend({ 6 | beforeModel(transition) { 7 | var isAuthenticated = this.get('session.content.isAuthenticated'); 8 | if (isAuthenticated) { 9 | this.transitionTo('application'); 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/routes/my-badges.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | import Ember from 'ember'; 4 | 5 | const { set } = Ember; 6 | 7 | export default Route.extend({ 8 | beforeModel(transition) { 9 | this._super(...arguments); 10 | if (this.get('session.uid') === undefined) { 11 | this.transitionTo('login'); 12 | } 13 | }, 14 | model(params) { 15 | let filter = {}; 16 | const uid = this.get('session.uid'); 17 | this.set('params', params); 18 | filter.state = 'all'; 19 | filter.page = params.page; 20 | return this.get('store').query('my-badges', { 21 | uid, 22 | filter 23 | }); 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /frontend/app/routes/not-found-catch.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | templateName: 'not-found' 5 | }); 6 | -------------------------------------------------------------------------------- /frontend/app/routes/not-found.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | redirect: ()=>{ 5 | var url = this.router.location.formatURL('/not-found'); 6 | if (window.location.pathname !== url) { 7 | this.transitionTo('/not-found'); 8 | } 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /frontend/app/routes/reset/password.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model(params) { 5 | return this.get('store').queryRecord('valid-token', params); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/routes/settings.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Route from '@ember/routing/route'; 3 | 4 | const { RSVP, set } = Ember; 5 | 6 | export default Route.extend({ 7 | beforeModel() { 8 | if (this.get('session.uid') === undefined) { 9 | this.transitionTo('login'); 10 | } 11 | }, 12 | model() { 13 | return RSVP.hash({ 14 | user: this.get('store').peekAll('user').slice(0, 1)[0] 15 | }); 16 | }, 17 | 18 | setupController(controller, model) { 19 | this._super(...arguments); 20 | set(controller, 'user', model.user); 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /frontend/app/routes/signup.js: -------------------------------------------------------------------------------- 1 | /* jshint strict:false */ 2 | 3 | import Route from '@ember/routing/route'; 4 | 5 | export default Route.extend({ 6 | beforeModel(transition) { 7 | var isAuthenticated = this.get('session.content.isAuthenticated'); 8 | if (isAuthenticated) { 9 | this.transitionTo('application'); 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/routes/sitemap.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/user-guide.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | }); 5 | -------------------------------------------------------------------------------- /frontend/app/routes/verify/email.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model(params) { 5 | return this.get('store').queryRecord('verify-mail', params); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/serializers/application.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | keyForAttribute(key) { return key } 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/app/serializers/csv-file.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | 7 | serialize(snapshot, options) { 8 | let json = this._super(...arguments); 9 | json.csvFile = { 10 | 'uid' : json.data.attributes.uid, 11 | 'csvFile' : json.data.attributes['csv-file'], 12 | 'extension' : json.data.attributes.extension 13 | }; 14 | 15 | delete json.data; 16 | return json; 17 | }, 18 | 19 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 20 | return payload; 21 | } 22 | 23 | }); 24 | -------------------------------------------------------------------------------- /frontend/app/serializers/cust-img-file.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | 7 | serialize(snapshot, options) { 8 | let json = this._super(...arguments); 9 | json.imgFile = { 10 | 'uid' : json.data.attributes.uid, 11 | 'imgFile' : json.data.attributes['image-data'], 12 | 'extension' : json.data.attributes.extension 13 | }; 14 | 15 | delete json.data; 16 | return json; 17 | }, 18 | 19 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 20 | return payload; 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /frontend/app/serializers/def-image.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | 7 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 8 | return payload; 9 | } 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/app/serializers/image-upload.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | 7 | serialize(snapshot, options) { 8 | let json = this._super(...arguments); 9 | json.imgFile = { 10 | 'uid' : json.data.attributes.uid, 11 | 'imgFile' : json.data.attributes['image-data'], 12 | 'extension' : json.data.attributes.extension 13 | }; 14 | 15 | delete json.data; 16 | return json; 17 | }, 18 | 19 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 20 | return payload; 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /frontend/app/serializers/my-badges.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | 7 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 8 | console.log(payload); 9 | return payload; 10 | } 11 | 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/app/serializers/reset-mail.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 7 | console.log(payload); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /frontend/app/serializers/text-data.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import DS from 'ember-data'; 3 | 4 | const { String } = Ember; 5 | const { JSONAPISerializer } = DS; 6 | 7 | export default JSONAPISerializer.extend({ 8 | 9 | keyForAttribute(attr) { 10 | return String.underscore(attr); 11 | }, 12 | 13 | serialize(snapshot, options) { 14 | let json = this._super(...arguments); 15 | return json; 16 | }, 17 | 18 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 19 | return payload; 20 | } 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /frontend/app/serializers/user-signup.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | const { JSONAPISerializer } = DS; 4 | 5 | export default JSONAPISerializer.extend({ 6 | 7 | serialize(snapshot, options) { 8 | let json = this._super(...arguments); 9 | return json; 10 | }, 11 | 12 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 13 | return payload; 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/app/serializers/user.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | import Ember from 'ember'; 3 | 4 | const { inject } = Ember; 5 | const { JSONAPISerializer } = DS; 6 | 7 | export default JSONAPISerializer.extend({ 8 | authToken: inject.service('auth-session'), 9 | keyForAttribute(key) { 10 | return key; 11 | }, 12 | 13 | normalizeResponse(store, primaryModelClass, payload, id, requestType) { 14 | if (payload.data.attributes.siteAdmin === true) { 15 | this.authToken.enableAdmin(); 16 | localStorage.setItem('adminStatus', true); 17 | } else { 18 | localStorage.setItem('adminStatus', false); 19 | } 20 | delete payload.data.attributes.siteAdmin; 21 | return this._super(...arguments); 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /frontend/app/styles/app.scss: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900'); // sass-lint:disable-line no-url-domains,no-url-protocols 2 | @import "vars"; 3 | @import "partials/all"; 4 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/all.scss: -------------------------------------------------------------------------------- 1 | @import "welcome"; 2 | @import "overrides"; 3 | @import "notifications"; 4 | @import "login"; 5 | @import "signup"; 6 | @import "forgotpwd"; 7 | @import "create-badge"; 8 | @import "my-badges"; 9 | @import "my-profile"; 10 | @import "user-guide"; 11 | @import "pricing"; 12 | @import "admin"; 13 | @import "application"; 14 | @import "nav-bar"; 15 | @import "reset-pass"; 16 | @import "sitemap"; 17 | @import "footer-main"; 18 | @import "preview"; 19 | @import "uploader"; 20 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/application.scss: -------------------------------------------------------------------------------- 1 | .pusher { 2 | display: flex; 3 | flex-direction: column; 4 | min-height: 100vh; 5 | } 6 | 7 | .main-container { 8 | flex: 1; 9 | padding-bottom: 40px; 10 | } 11 | 12 | .text-zoom { 13 | font-size: 1.5em; 14 | } 15 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/footer-main.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | background-color: #1b1c1d; 3 | z-index: .8; 4 | } 5 | 6 | @media only screen and (max-width: 600px) { 7 | .mobile-hide{ 8 | display: none; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/forgotpwd.scss: -------------------------------------------------------------------------------- 1 | $colorlinks: #33587d; 2 | 3 | .reset { 4 | position: relative; 5 | text-align: center; 6 | top: 100px; 7 | } 8 | 9 | .form-div { 10 | text-align: center; 11 | 12 | .form-title { 13 | color: $colorlinks; 14 | font-size: 20px; 15 | font-weight: 300; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/my-badges.scss: -------------------------------------------------------------------------------- 1 | .ui.segment { 2 | margin: 1%; 3 | 4 | .cards { 5 | .card { 6 | padding-right: 10px; 7 | 8 | img { 9 | height: 300px; 10 | width: 100%; 11 | } 12 | } 13 | } 14 | } 15 | 16 | .noimage { 17 | height: 90%; 18 | width: 100%; 19 | margin-left: 4%; 20 | } 21 | 22 | .checkbox { 23 | position: absolute; 24 | top: 0px; 25 | right: 0px; 26 | } 27 | 28 | .image { 29 | position: relative; 30 | } 31 | 32 | .downloadBadge { 33 | margin-top: -13px !important; 34 | } 35 | 36 | .downloadCheck { 37 | margin-top: 7px !important; 38 | } 39 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/nav-bar.scss: -------------------------------------------------------------------------------- 1 | .create , .header.item { 2 | background-color: #ffffff !important;; 3 | } 4 | 5 | @media only screen and (max-width: 600px) { 6 | .create{ 7 | font-size: 12px; 8 | } 9 | 10 | .header h2{ 11 | font-size: 16px; 12 | } 13 | 14 | .mobile-hide{ 15 | display: none; 16 | } 17 | } 18 | 19 | .orange.text { 20 | color: #F2711C !important; 21 | font-weight: 300 !important; 22 | } 23 | 24 | .upper { 25 | font-weight: 300 !important; 26 | text-transform: uppercase; 27 | } 28 | 29 | .ui.menu .ui.dropdown.item .menu .item:not(.filtered) { 30 | font-size: 15px !important; 31 | font-weight: 300 !important; 32 | padding: 12px 20px !important; 33 | } 34 | 35 | .pull-right { 36 | position: absolute; 37 | right: 5px; 38 | } 39 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/preview.scss: -------------------------------------------------------------------------------- 1 | .bgImg { 2 | border-radius: 5px; 3 | height: 600px; 4 | } 5 | 6 | .preview.content { 7 | margin-left: 50px; 8 | padding-top: 200px; 9 | } 10 | 11 | // scss-lint:disable all 12 | .preview { 13 | top: -1% !important; 14 | z-index: .9; 15 | } 16 | 17 | // scss-lint:enable all 18 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/reset-pass.scss: -------------------------------------------------------------------------------- 1 | .reset-pass { 2 | position: relative; 3 | text-align: center; 4 | top: 60px; 5 | } 6 | 7 | .div { 8 | text-align: center; 9 | 10 | .title { 11 | font-size: 20px; 12 | font-weight: 300; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/sitemap.scss: -------------------------------------------------------------------------------- 1 | $colorlinks: #33587d; 2 | 3 | .column { 4 | color: $colorlinks; 5 | 6 | h4 { 7 | font-size: 17px; 8 | text-decoration-line: underline; 9 | } 10 | 11 | .links { 12 | color: $colorlinks; 13 | font-size: 15px; 14 | text-decoration: none; 15 | text-decoration-color: $colorlinks; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/uploader.scss: -------------------------------------------------------------------------------- 1 | .upload.segment { 2 | cursor: pointer; 3 | font-size: 20px; 4 | margin-bottom: 10px !important; 5 | margin-top: 15px !important; 6 | padding: 30px 0; 7 | transition: color .3s; 8 | 9 | &.drag-hover { 10 | background-color: #fffcf4; 11 | } 12 | 13 | &:hover { 14 | color: #2a2a2a !important; 15 | } 16 | 17 | small { 18 | font-size: 14px; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/user-guide.scss: -------------------------------------------------------------------------------- 1 | .user-guide { 2 | margin-bottom: 90px; 3 | position: relative; 4 | top: 40px; 5 | } 6 | -------------------------------------------------------------------------------- /frontend/app/styles/partials/verify-mail.scss: -------------------------------------------------------------------------------- 1 | .ui.info.message { 2 | background-color: #f8ffff; 3 | color: #276f86; 4 | } 5 | -------------------------------------------------------------------------------- /frontend/app/styles/vars.scss: -------------------------------------------------------------------------------- 1 | $page-top-margin: 1.1%; 2 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/badges/list.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{badge-table empty=empty badges=badges user=user session=session sendbadgeId=(action 'deleteBadge' badge) prevPage=(action 'prevPage') nextPage=(action 'nextPage') allow_prev=allow_prev allow_next=allow_next allow=allow}} 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/content.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{#tabbed-navigation isNonPointing=true}} 5 | {{#link-to 'admin.content.index' class='item'}} 6 | Social Links 7 | {{/link-to}} 8 | {{/tabbed-navigation}} 9 |
10 |
11 |
12 |
13 | {{outlet}} 14 |
15 |
16 |
17 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/content/index.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#each model as |socialMedia|}} 3 |
4 |
5 | {{input type="text" value=socialMedia.link }} 6 | 7 |
8 |
9 | {{/each}} 10 | 11 |
12 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/modules.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | Payments 7 |
8 |
9 |
10 | {{ui-checkbox class='toggle' checked=model.paymentInclude onChange=(action (mut model.paymentInclude))}} 11 |
12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/permissions.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#tabbed-navigation isNonPointing=true}} 3 | {{#link-to 'admin.permissions.system-roles' class='item'}} 4 | {{'System Roles'}} 5 | {{/link-to}} 6 | {{/tabbed-navigation}} 7 |
8 | {{outlet}} 9 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/reports.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} -------------------------------------------------------------------------------- /frontend/app/templates/admin/settings.hbs: -------------------------------------------------------------------------------- 1 | {{forms/system-settings-form settings=model submitForm=(action 'submit') isLoading=isLoading}} -------------------------------------------------------------------------------- /frontend/app/templates/admin/users/list.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{user-table empty=empty users=users prevPage=(action 'prevPage') nextPage=(action 'nextPage') allow_prev=allow_prev allow_next=allow_next allow=allow}} 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /frontend/app/templates/admin/users/view.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} -------------------------------------------------------------------------------- /frontend/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{nav-bar session=session authToken=authToken logOut=(action 'logOut')}} 3 | {{#if (eq currentRouteName 'index')}} 4 | {{welcome-header session=session}} 5 | {{pricing-component}} 6 | {{badge-design}} 7 | 8 | {{/if}} 9 |
10 | {{outlet}} 11 |
12 | {{footer-main socialMedia=model.socialMedia}} 13 |
14 | {{notification-container position="top"}} 15 | -------------------------------------------------------------------------------- /frontend/app/templates/components/admin/deployment-comp.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} -------------------------------------------------------------------------------- /frontend/app/templates/components/admin/pricing-comp.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} -------------------------------------------------------------------------------- /frontend/app/templates/components/admin/usage-stat-comp.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} -------------------------------------------------------------------------------- /frontend/app/templates/components/admin/user-comp.hbs: -------------------------------------------------------------------------------- 1 | {{#each users as |user|}} 2 | {{user-card user=user}} 3 | {{/each}} -------------------------------------------------------------------------------- /frontend/app/templates/components/background-component/color-bg-component.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{col-pick-input value=defColor}} 5 |
6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /frontend/app/templates/components/background-component/image-component.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{forms/image-upload mutateCustomImg=(action 'mutateCustomImg') imageData=imageData needsCropper=true id=imageId icon='camera' hint='Select User Image' maxSizeInKb=1000 height=280 width=248}} 3 |
4 | -------------------------------------------------------------------------------- /frontend/app/templates/components/background-component/logo-image-component.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{forms/image-upload imageData=logoImageData needsCropper=true id='badge_logo' icon='camera' hint='Select Logo Image' maxSizeInKb=1000 height=211 width=743}} 3 |
4 | -------------------------------------------------------------------------------- /frontend/app/templates/components/badge-component/badge-size.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 6 | 7 |
8 |
9 |
10 |
11 | 12 | 13 |
14 |
15 |
16 |
17 | -------------------------------------------------------------------------------- /frontend/app/templates/components/badge-name.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | {{input type="text" value=badge.badge_name }} 5 |
6 |
7 | -------------------------------------------------------------------------------- /frontend/app/templates/components/data-component.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{ yield }} 3 |
4 | 5 | -------------------------------------------------------------------------------- /frontend/app/templates/components/data-component/csv-component.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /frontend/app/templates/components/data-component/name-component.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{input name="formNameData" value=formNameData placeholder="My Badge"}} 3 |
4 | -------------------------------------------------------------------------------- /frontend/app/templates/components/data-component/text-component.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{textarea name="data" rows="3" value=formData placeholder="First Name, Last Name, Designation, Organization, @handle"}} 3 |
4 | -------------------------------------------------------------------------------- /frontend/app/templates/components/dimmer-loader.hbs: -------------------------------------------------------------------------------- 1 | {{#if isDimmerVisible}} 2 |
3 |
{{loaderText}}
4 |
5 | {{/if}} -------------------------------------------------------------------------------- /frontend/app/templates/components/error-component/not-found.hbs: -------------------------------------------------------------------------------- 1 |
2 |

404 Not Found

3 |

Oops, the page you're
looking for does not
exist.

4 |

5 | You may want to head back to the home page.
6 | If you think something is broken, try again. 7 |

8 |
9 | Go Back Home 10 | -------------------------------------------------------------------------------- /frontend/app/templates/components/error-component/server-error.hbs: -------------------------------------------------------------------------------- 1 |
2 |

500 Internal Server Error

3 |

Oops, the page you're
looking for caused an error
on our servers.

4 |

5 | You may want to head back to the home page.
6 | If you think something is broken, try again. 7 |

8 |
9 | Go Back Home 10 | -------------------------------------------------------------------------------- /frontend/app/templates/components/forgot-password.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
Forgot Password
6 | 7 | {{input name="email" value=email placeholder="Email" type="email"}} 8 |
9 |
10 | 11 |
12 |
13 |
14 |
15 | -------------------------------------------------------------------------------- /frontend/app/templates/components/modals/cropper-modal.hbs: -------------------------------------------------------------------------------- 1 | 2 |
3 | {{'Crop Image'}} 4 |
5 |
6 | Cropper preview 7 |
8 |
9 | 12 | 16 |
17 | -------------------------------------------------------------------------------- /frontend/app/templates/components/modals/modal-base.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /frontend/app/templates/components/tabbed-navigation.hbs: -------------------------------------------------------------------------------- 1 | {{#if device.isMobile}} 2 |
3 | {{currentRoute}} 4 |
5 | {{/if}} 6 | 9 | -------------------------------------------------------------------------------- /frontend/app/templates/components/text-component/font-color.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 | {{col-pick-input value=defFontColor}} 6 |
7 |
8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /frontend/app/templates/components/user-card.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |

Username : {{user.username}}

8 |

Email: {{user.email}}

9 |
10 |
11 |
-------------------------------------------------------------------------------- /frontend/app/templates/components/verify-mail.hbs: -------------------------------------------------------------------------------- 1 |
2 |
Your Email is {{model.status}}
3 |
-------------------------------------------------------------------------------- /frontend/app/templates/components/welcome-header.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

The simplest way to create badges.

4 |
5 | {{#if session.isAuthenticated}} 6 | {{#link-to 'create-badges'}} 7 | Create Badges 8 | {{/link-to}} 9 | {{else}} 10 | Create Badges 11 | {{/if}} 12 |
13 | -------------------------------------------------------------------------------- /frontend/app/templates/error-component.hbs: -------------------------------------------------------------------------------- 1 | {{#if (eq model.errors.0.status '404')}} 2 | {{errors/not-found}} 3 | {{else}} 4 | {{errors/server-error}} 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /frontend/app/templates/forgotpwd.hbs: -------------------------------------------------------------------------------- 1 | {{forgot-password sendResetMail=(action 'sendResetMail')}} -------------------------------------------------------------------------------- /frontend/app/templates/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /frontend/app/templates/my-badges.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{user-component/my-badges model=model user=user session=session sendbadgeId=(action 'deleteBadge') sendBadgeName=(action 'updateBadgeName') nextPage=(action 'nextPage')}} 3 |
-------------------------------------------------------------------------------- /frontend/app/templates/not-found-catch.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /frontend/app/templates/not-found.hbs: -------------------------------------------------------------------------------- 1 | {{error-component/not-found}} 2 | -------------------------------------------------------------------------------- /frontend/app/templates/reset/password.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#if model.valid}} {{password-comp resetPwd=(action 'resetPwd')}} {{else}} 3 | 4 |

Token Invalidated

5 | {{/if}} 6 |
7 | -------------------------------------------------------------------------------- /frontend/app/templates/settings.hbs: -------------------------------------------------------------------------------- 1 | {{user-component/my-profile isLoadingName=isLoadingName isLoadingPassword=isLoadingPassword user=user session=session sendProfileImage=(action 'updateProfileImage') sendUserName=(action 'updateUserName') sendUserPassword=(action 'updateUserPassword')}} 2 | -------------------------------------------------------------------------------- /frontend/app/templates/signup.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{forms/signup-form signUp=(action 'signUp')}} 4 |
5 |
6 | -------------------------------------------------------------------------------- /frontend/app/templates/user-guide.hbs: -------------------------------------------------------------------------------- 1 | {{user-component/user-guide}} 2 | -------------------------------------------------------------------------------- /frontend/app/templates/verify/email.hbs: -------------------------------------------------------------------------------- 1 | {{verify-mail model=model}} -------------------------------------------------------------------------------- /frontend/app/utils/form.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | export const resetFormElement = e => { 4 | e = $(e); 5 | e.wrap('
').closest('form').get(0).reset(); 6 | e.unwrap(); 7 | }; 8 | -------------------------------------------------------------------------------- /frontend/config/deploy.js: -------------------------------------------------------------------------------- 1 | /* jshint node: true */ 2 | 3 | module.exports = function(deployTarget) { 4 | var ENV = { 5 | build: {} 6 | // include other plugin configuration that applies to all deploy targets here 7 | }; 8 | 9 | ENV.pipeline = { 10 | disabled: { 11 | git: true 12 | } 13 | }; 14 | 15 | if (deployTarget === 'gh-pages-with-domain' || deployTarget === 'gh-pages') { 16 | ENV.pipeline = { 17 | disabled: {} 18 | }; 19 | ENV.git = { 20 | repo : `https://ParthS007:${process.env.GH_TOKEN}@github.com/fossasia/badgeyay`, 21 | branch : 'gh-pages', 22 | commitMessage : 'Travis CI Clean Deploy %@' 23 | }; 24 | } 25 | 26 | return ENV; 27 | }; 28 | -------------------------------------------------------------------------------- /frontend/config/targets.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | browsers: [ 3 | 'ie 9', 4 | 'last 1 Chrome versions', 5 | 'last 1 Firefox versions', 6 | 'last 1 Safari versions' 7 | ] 8 | }; 9 | -------------------------------------------------------------------------------- /frontend/public/CNAME: -------------------------------------------------------------------------------- 1 | badgeyay.com 2 | -------------------------------------------------------------------------------- /frontend/public/images/Badgeyay-artwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/Badgeyay-artwork.png -------------------------------------------------------------------------------- /frontend/public/images/add_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/add_more.png -------------------------------------------------------------------------------- /frontend/public/images/badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/black_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/black_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/blue_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/blue_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/cyan_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/cyan_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/gray_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/gray_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/green_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/green_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/red_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/red_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/user_defined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/user_defined.png -------------------------------------------------------------------------------- /frontend/public/images/badge_backgrounds/yellow_futuristic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/badge_backgrounds/yellow_futuristic.png -------------------------------------------------------------------------------- /frontend/public/images/blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/blog.png -------------------------------------------------------------------------------- /frontend/public/images/default_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/default_logo.png -------------------------------------------------------------------------------- /frontend/public/images/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/empty.png -------------------------------------------------------------------------------- /frontend/public/images/eye-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/eye-16.png -------------------------------------------------------------------------------- /frontend/public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/favicon.ico -------------------------------------------------------------------------------- /frontend/public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/favicon.png -------------------------------------------------------------------------------- /frontend/public/images/landing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/landing.jpg -------------------------------------------------------------------------------- /frontend/public/images/pdf-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/public/images/pdf-icon.png -------------------------------------------------------------------------------- /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /frontend/scripts/gh_deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git config --global user.name "Travis CI" 4 | git config --global user.email "noreply+travis@fossasia.org" 5 | 6 | 7 | export DEPLOY_BRANCH=${DEPLOY_BRANCH:-development} 8 | 9 | if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/badgeyay" -o "$TRAVIS_BRANCH" != "$DEPLOY_BRANCH" ]; then 10 | echo "Skipping deploy; The request or commit is not on development:)" 11 | exit 0 12 | fi 13 | 14 | echo $DEPLOY_DOMAIN >> public/CNAME 15 | ember deploy gh-pages-with-domain 16 | -------------------------------------------------------------------------------- /frontend/scripts/pr_deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then 3 | echo "Not a PR. Skipping surge deployment" 4 | exit 0 5 | fi 6 | 7 | ember build --environment=production 8 | 9 | npm i -g surge 10 | 11 | export SURGE_LOGIN=test@example.co.in 12 | # Token of a dummy account. So can be added to vcs 13 | export SURGE_TOKEN=d1c28a7a75967cc2b4c852cca0d12206 14 | 15 | export DEPLOY_DOMAIN=https://pr-${TRAVIS_PULL_REQUEST}-fossasia-badgeyay.surge.sh 16 | surge --project ./dist --domain $DEPLOY_DOMAIN; 17 | -------------------------------------------------------------------------------- /frontend/semantic.json: -------------------------------------------------------------------------------- 1 | { 2 | "base": "semantic/", 3 | "paths": { 4 | "source": { 5 | "config": "src/theme.config", 6 | "definitions": "src/definitions/", 7 | "site": "src/site/", 8 | "themes": "src/themes/" 9 | }, 10 | "output": { 11 | "packaged": "dist/", 12 | "uncompressed": "dist/components/", 13 | "compressed": "dist/components/", 14 | "themes": "dist/themes/" 15 | }, 16 | "clean": "dist/" 17 | }, 18 | "permission": false, 19 | "autoInstall": true, 20 | "rtl": false, 21 | "version": "2.4.2" 22 | } -------------------------------------------------------------------------------- /frontend/testem.js: -------------------------------------------------------------------------------- 1 | /* jshint camelcase: false */ 2 | 3 | module.exports = { 4 | test_page : 'tests/index.html?hidepassed', 5 | disable_watching : true, 6 | launch_in_ci : [ 7 | 'Chrome' 8 | ], 9 | launch_in_dev: [ 10 | 'Chrome' 11 | ], 12 | browser_args: { 13 | Chrome: { 14 | mode : 'ci', 15 | args : [ 16 | '--disable-gpu', 17 | '--headless', 18 | '--remote-debugging-port=0', 19 | '--window-size=1440,900' 20 | ] 21 | } 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /frontend/tests/helpers/destroy-app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | const { run } = Ember; 4 | 5 | export default function destroyApp(application) { 6 | run(application, 'destroy'); 7 | } 8 | -------------------------------------------------------------------------------- /frontend/tests/helpers/module-for-acceptance.js: -------------------------------------------------------------------------------- 1 | import { module } from 'qunit'; 2 | import { resolve } from 'rsvp'; 3 | import startApp from '../helpers/start-app'; 4 | import destroyApp from '../helpers/destroy-app'; 5 | 6 | export default function(name, options = {}) { 7 | module(name, { 8 | beforeEach() { 9 | this.application = startApp(); 10 | 11 | if (options.beforeEach) { 12 | return options.beforeEach.apply(this, arguments); 13 | } 14 | }, 15 | 16 | afterEach() { 17 | let afterEach = options.afterEach && options.afterEach.apply(this, arguments); 18 | return resolve(afterEach).then(() => destroyApp(this.application)); 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /frontend/tests/helpers/start-app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Application from '../../app'; 3 | import config from '../../config/environment'; 4 | 5 | const { merge, run } = Ember; 6 | 7 | export default function startApp(attrs) { 8 | let attributes = merge({}, config.APP); 9 | attributes = merge(attributes, attrs); // use defaults, but you can override; 10 | 11 | return run(() => { 12 | let application = Application.create(attributes); 13 | application.setupForTesting(); 14 | application.injectTestHelpers(); 15 | return application; 16 | }); 17 | } 18 | -------------------------------------------------------------------------------- /frontend/tests/integration/helpers/def-images-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupRenderingTest } from 'ember-qunit'; 3 | import { render } from '@ember/test-helpers'; 4 | import hbs from 'htmlbars-inline-precompile'; 5 | 6 | module('Integration | Helper | defImages', function(hooks) { 7 | setupRenderingTest(hooks); 8 | 9 | // Replace this with your real tests. 10 | test('it renders', async function(assert) { 11 | this.set('inputValue', 'fossasia_badgeyay'); 12 | 13 | await render(hbs`{{def-images inputValue}}`); 14 | 15 | assert.equal(this.element.textContent.trim(), 'Fossasia Badgeyay'); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/tests/integration/helpers/first-cap-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupRenderingTest } from 'ember-qunit'; 3 | import { render } from '@ember/test-helpers'; 4 | import hbs from 'htmlbars-inline-precompile'; 5 | 6 | module('Integration | Helper | firstCap', function(hooks) { 7 | setupRenderingTest(hooks); 8 | 9 | // Replace this with your real tests. 10 | test('it renders', async function(assert) { 11 | this.set('inputValue', 'badgeyay'); 12 | 13 | await render(hbs`{{first-cap inputValue}}`); 14 | 15 | assert.equal(this.element.textContent.trim(), 'Badgeyay'); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/tests/integration/helpers/if-equal-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupRenderingTest } from 'ember-qunit'; 3 | import { render } from '@ember/test-helpers'; 4 | import hbs from 'htmlbars-inline-precompile'; 5 | 6 | module('Integration | Helper | if-equal', function(hooks) { 7 | setupRenderingTest(hooks); 8 | 9 | // Replace this with your real tests. 10 | test('it renders', async function(assert) { 11 | this.set('inputValue', '1234'); 12 | 13 | await render(hbs`{{if-equal inputValue}}`); 14 | 15 | assert.equal(this.element.textContent.trim(), 'false'); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/tests/integration/helpers/init-cap-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupRenderingTest } from 'ember-qunit'; 3 | import { render } from '@ember/test-helpers'; 4 | import hbs from 'htmlbars-inline-precompile'; 5 | 6 | module('Integration | Helper | initCap', function(hooks) { 7 | setupRenderingTest(hooks); 8 | 9 | // Replace this with your real tests. 10 | test('it renders', async function(assert) { 11 | this.set('inputValue', 'fossasia badgeyay'); 12 | 13 | await render(hbs`{{init-cap inputValue}}`); 14 | 15 | assert.equal(this.element.textContent.trim(), 'Fossasia Badgeyay'); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/tests/integration/helpers/rel-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupRenderingTest } from 'ember-qunit'; 3 | import { render } from '@ember/test-helpers'; 4 | import hbs from 'htmlbars-inline-precompile'; 5 | 6 | module('Integration | Helper | rel', function(hooks) { 7 | setupRenderingTest(hooks); 8 | 9 | // Replace this with your real tests. 10 | test('it renders', async function(assert) { 11 | this.set('inputValue', '10'); 12 | 13 | await render(hbs`{{rel inputValue}}`); 14 | 15 | assert.equal(this.element.textContent.trim(), '27'); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import Application from '../app'; 2 | import config from '../config/environment'; 3 | import { setApplication } from '@ember/test-helpers'; 4 | import { start } from 'ember-qunit'; 5 | 6 | setApplication(Application.create(config.APP)); 7 | 8 | start(); 9 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/admin-report-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | admin report', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:admin-report'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/admin-stat-mail-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | admin stat mail', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:admin-stat-mail'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/admin-stat-user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | admin stat user', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:admin-stat-user'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | admin', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:admin'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/all-admin-badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | all admin badge', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:all-admin-badge'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/all-badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | all badge', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:all-badge'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/all-user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | all user', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:all-user'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | badge', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:badge'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/bg-color-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | bg color', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:bg-color'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/create-admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | create admin', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:create-admin'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/create-sale-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | create sale', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:create-sale'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/csv-file-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | csv file', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:csv-file'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/cust-img-file-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | cust img file', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:cust-img-file'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/def-image-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | def image', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:def-image'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/def-image-upload-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | def image upload', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:def-image-upload'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/delete-admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | delete admin', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:delete-admin'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/delete-sale-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | delete sale', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:delete-sale'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/image-upload-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | image upload', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:image-upload'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/login-token-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | login token', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:login-token'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/module-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | module', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:module'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/my-badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | my badges', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:my-badges'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/permission-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | permission', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:permission'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/profile-image-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | profile image', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:profile-image'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/reset-mail-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | reset mail', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:reset-mail'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/reset-password-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | reset password', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:reset-password'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/reset-user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | reset user', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:reset-user'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/role-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | role', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:role'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/setting-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | setting', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:setting'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/social-content-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | social content', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:social-content'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/text-data-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | text data', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:text-data'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/user-signup-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | user signup', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:user-signup'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | user', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:user'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/valid-token-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | valid token', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:valid-token'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/adapters/verify-mail-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Adapter | verify mail', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let adapter = this.owner.lookup('adapter:verify-mail'); 10 | assert.ok(adapter); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/badges/list-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/badges/list', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/badges/list'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/content/index-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/content/index', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/content/index'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/modules-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/modules', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/modules'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/permissions/system-roles-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/permissions/system-roles', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/permissions/system-roles'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/reports/list-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/reports/list', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/reports/list'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/settings-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/settings', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/settings'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/users-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/users', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/users'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/admin/users/list-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | admin/users/list', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:admin/users/list'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/create-badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | create-badges', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:create-badges'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/edit-badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | edit-badge', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let controller = this.owner.lookup('controller:edit-badge'); 9 | assert.ok(controller); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/forgotpwd-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | forgotpwd', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:forgotpwd'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/login-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | login', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:login'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/logout-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | logout', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:logout'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/my-badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | my-badges', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:my-badges'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/my-profile-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | my-profile', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:my-profile'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/reset/password-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | reset/password', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:reset/password'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/settings-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | settings', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:settings'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/signup-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | signup', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:signup'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/controllers/verify/email-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Controller | verify/email', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let controller = this.owner.lookup('controller:verify/email'); 10 | assert.ok(controller); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/admin-report-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | admin report', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('admin-report', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/admin-stat-mail-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | admin stat mail', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('admin-stat-mail', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/admin-stat-user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | admin stat user', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('admin-stat-user', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | admin', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('admin', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/all-admin-badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | all admin badge', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('all-admin-badge', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/all-badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | all badge', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('all-badge', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/all-user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | all user', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('all-user', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | badge', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('badge', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/bg-color-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | bg color', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('bg-color', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/create-admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | create admin', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('create-admin', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/create-sale-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | create sale', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('create-sale', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/csv-file-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | csv file', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('csv-file', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/cust-img-file-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | cust img file', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('cust-img-file', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/def-image-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | def image', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('def-image', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/def-image-upload-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | def image upload', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('def-image-upload', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/delete-admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | delete admin', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('delete-admin', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/delete-sale-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | delete sale', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('delete-sale', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/image-upload-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | image upload', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('image-upload', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/login-token-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | login token', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('login-token', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/module-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | module', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('module', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/my-badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | my badges', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('my-badges', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/permission-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | permission', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('permission', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/profile-image-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | profile image', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('profile-image', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/reset-mail-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | reset mail', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('reset-mail', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/reset-password-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | reset password', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('reset-password', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/reset-user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | reset user', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('reset-user', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/role-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | role', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('role', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/setting-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | setting', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('setting', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/social-content-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Model | social content', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let model = store.createRecord('social-content', {}); 11 | assert.ok(model); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/text-data-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | text data', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('text-data', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/user-signup-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | user signup', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('user-signup', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/valid-token-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | valid token', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('valid-token', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/models/verify-mail-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Model | verify mail', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let model = run(() => store.createRecord('verify-mail', {})); 12 | assert.ok(model); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/badges', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/badges'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/badges/list-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/badges/list', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/badges/list'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/content-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/content', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/content'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/index-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/index', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/index'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/modules-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/modules', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/modules'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/permissions-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/permissions', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/permissions'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/permissions/system-roles-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/permissions/system-roles', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/permissions/system-roles'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/reports-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/reports', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/reports'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/reports/list-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/reports/list', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/reports/list'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/settings-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/settings', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/settings'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/users-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/users', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/users'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/users/list-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/users/list', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/users/list'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/admin/users/view-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | admin/users/view', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:admin/users/view'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/contact-badgeyay-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | contact-badgeyay', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:contact-badgeyay'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/create-badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | create-badges', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:create-badges'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/faq-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | faq', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:faq'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/forgotpwd-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | forgotpwd', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:forgotpwd'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/index-test.js: -------------------------------------------------------------------------------- 1 | import { moduleFor, test } from 'ember-qunit'; 2 | 3 | moduleFor('route:index', 'Unit | Route | index', { 4 | // Specify the other units that are required for this test. 5 | // needs: ['controller:foo'] 6 | }); 7 | 8 | test('it exists', function(assert) { 9 | let route = this.subject(); 10 | assert.ok(route); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/login-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | login', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:login'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/my-badges-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | my-badges', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:my-badges'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/not-found-catch-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | not-found-catch', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:not-found-catch'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/not-found-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | not-found', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:not-found'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/reset/password-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | reset/password', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:reset/password'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/settings-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | settings', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:settings'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/signup-test.js: -------------------------------------------------------------------------------- 1 | /* jshint strict:false */ 2 | 3 | import { module, test } from 'qunit'; 4 | import { setupTest } from 'ember-qunit'; 5 | 6 | module('Unit | Route | signup', function(hooks) { 7 | setupTest(hooks); 8 | 9 | test('it exists', function(assert) { 10 | let route = this.owner.lookup('route:signup'); 11 | assert.ok(route); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/sitemap-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | sitemap', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:sitemap'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/user-guide-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | user-guide', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:user-guide'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/routes/verify/email-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | verify/email', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | let route = this.owner.lookup('route:verify/email'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/tests/unit/serializers/badge-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Serializer | badge', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let serializer = store.serializerFor('badge'); 12 | 13 | assert.ok(serializer); 14 | }); 15 | 16 | test('it serializes records', function(assert) { 17 | let store = this.owner.lookup('service:store'); 18 | let record = run(() => store.createRecord('badge', {})); 19 | 20 | let serializedRecord = record.serialize(); 21 | 22 | assert.ok(serializedRecord); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /frontend/tests/unit/serializers/image-upload-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Serializer | image upload', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let store = this.owner.lookup('service:store'); 10 | let serializer = store.serializerFor('image-upload'); 11 | 12 | assert.ok(serializer); 13 | }); 14 | 15 | test('it serializes records', function(assert) { 16 | let store = this.owner.lookup('service:store'); 17 | let record = store.createRecord('image-upload', {}); 18 | 19 | let serializedRecord = record.serialize(); 20 | 21 | assert.ok(serializedRecord); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /frontend/tests/unit/serializers/user-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | import { run } from '@ember/runloop'; 4 | 5 | module('Unit | Serializer | user', function(hooks) { 6 | setupTest(hooks); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let store = this.owner.lookup('service:store'); 11 | let serializer = store.serializerFor('user'); 12 | 13 | assert.ok(serializer); 14 | }); 15 | 16 | test('it serializes records', function(assert) { 17 | let store = this.owner.lookup('service:store'); 18 | let record = run(() => store.createRecord('user', {})); 19 | 20 | let serializedRecord = record.serialize(); 21 | 22 | assert.ok(serializedRecord); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /frontend/tests/unit/services/auth-session-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Service | auth-session', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let service = this.owner.lookup('service:auth-session'); 10 | assert.ok(service); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/tests/unit/services/firebase-service-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Service | firebase-service', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | let service = this.owner.lookup('service:firebase-service'); 10 | assert.ok(service); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/badgeyay/d84bfbb943f2062c0a88ee5b61e02b361c76ceaf/frontend/vendor/.gitkeep -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "lockfileVersion": 1 3 | } 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | -r backend/requirements.txt 2 | -------------------------------------------------------------------------------- /runtime.txt: -------------------------------------------------------------------------------- 1 | python-3.6.5 -------------------------------------------------------------------------------- /scripts/install-hook.py: -------------------------------------------------------------------------------- 1 | import os 2 | import subprocess 3 | 4 | # Script to install 'pre-push-hook.py' in '.git/hooks' directory 5 | # Make sure you have a '.git/hooks/pre-push.sample' file before running this script. 6 | 7 | def main(): 8 | 9 | path_file = os.path.abspath(os.path.join(os.path.abspath(__file__), '..')) 10 | path_hook = os.path.abspath(os.path.join(path_file, '../.git/hooks')) 11 | subprocess.run(['mv', path_hook + '/pre-push.sample', path_hook + '/pre-push']) 12 | subprocess.run(['chmod', '+x', path_hook + '/pre-push']) 13 | subprocess.run(['cp', path_file + '/pre-push-hook.py', path_hook + '/pre-push']) 14 | print('Git pre-push-hook successfully installed.') 15 | 16 | if __name__ == '__main__': 17 | main() 18 | --------------------------------------------------------------------------------