Commit Graph

204 Commits (3019d9d73978222b56afe496f57e519a116e56a2)

Author SHA1 Message Date
Aravinth Manivannan 3fb756bd12
feat: use local gitea instance for hostea support in dev 2022-06-26 04:19:01 +05:30
Aravinth Manivannan 2defc2d804
chore: run dependency services in test script via docker-compose-dev-deps 2022-06-26 04:19:01 +05:30
Aravinth Manivannan 08457c8bb2
feat: define dev env with smtp and gitea services 2022-06-26 04:19:01 +05:30
Aravinth Manivannan 4b20f9a439
feat: Dashboard-Gitea SSO integration test script
STEPS
    1. Register new user on dashboard

    2. Confirm user email, link is received from email. maildev/maildev
       is an SMTP server specifically built for testing emails locally.
       It comes with a REST API[0], which is used to access emails

    3. Sign in to Dashboard

    4. Visit /support/new/ on dashboard to raise new support request

    5. Redirection to Hostea Gitea support repository is done via
       JavaScript, so we simply test to see if the support repository's
       new issue page is present in the Dashboard response

    6. Go to support repository's new issue page. Gitea will redirect to
       sign in page

    7. Parse sign in page, find OIDC SSO link in sign in page

    8. Visit OIDC SSO link in sign in page, to be redirected to
       authorization page

    9. If OIDC integration on Dashboard is setup via `create_oidc`
       management command, then auto-authorization will be enabled for
       the integration. So user will be redirected to Gitea

    10. For new OIDC logins, Gitea will present a form to choose
	preferred username and enter email address. So fill that form
	and submit it.

	Please note the form submits to a different URL than the one at
	which the form is available. See `Gitea.__link_acount` and
	`Gitea.__link_acount_signup` and its usage in `Gitea._sso_login`

    11. Verify user creation by GET /{username}, should respond HTTP 200

    12. Visit new issue on support repository, should respond HTTP 200

RESOURCES
    [0]: https://github.com/maildev/maildev/blob/master/docs/rest.md
2022-06-26 04:19:01 +05:30
Aravinth Manivannan 4542389df8
fix: import vars defined in local_settings.py
fixes https://gitea.hostea.org/Hostea/dashboard/issues/5
2022-06-26 04:17:26 +05:30
Aravinth Manivannan 3378e61606
hotfix: use dashboard/local_settings.py instead of env vars
My env var loading technique is not allowing local_settings.py to
override settings.py. This hotfix disables env vars in favor of
local_settings.py.

fixes https://gitea.hostea.org/Hostea/dashboard/issues/3
2022-06-26 01:49:32 +05:30
Aravinth Manivannan e7446dea2b Merge pull request 'allow overriding STRIPE_* with local_settings.py' (#2) from dachary/dashboard:wip-settings into master
Reviewed-on: https://gitea.hostea.org/Hostea/dashboard/pulls/2
2022-06-25 15:59:53 -04:00
Loïc Dachary adcdd00179
allow overriding STRIPE_* with local_settings.py
Without a default value it will fail before it gets a chance to be
overriden by local_settings.py

Signed-off-by: Loïc Dachary <loic@dachary.org>
2022-06-25 21:29:04 +02:00
Aravinth Manivannan b387e44f49
feat: docs: local_settings.example.py 2022-06-25 18:56:54 +05:30
Aravinth Manivannan 0d6968ff0a
feat: custom parameters template 2022-06-25 18:42:42 +05:30
Aravinth Manivannan a39bcdb7b8
feat: disable i8ln as it's not implemented yet
> Django’s internationalization hooks are on by default, and that means
there’s a bit of i18n-related overhead in certain places of the
framework. If you don’t use internationalization, you should take the
two seconds to set USE_I18N = False in your settings file. Then Django
will make some optimizations so as not to load the internationalization
machinery. # Please enter the commit message for your changes. Lines
starting

ref: https://docs.djangoproject.com/en/4.0/topics/i18n/translation/
2022-06-25 18:42:41 +05:30
Aravinth Manivannan f0ee46e045 Merge pull request 'Backend integration' (#1) from wip-enough into master
Reviewed-on: https://gitea.hostea.org/Hostea/dashboard/pulls/1

Merge approval received on chat
2022-06-25 09:11:56 -04:00
Aravinth Manivannan 26b7ea3ef2
fix & rm: create/rm hostscripts, rm HOSTEA_DOMAIN 2022-06-25 18:24:52 +05:30
Aravinth Manivannan 871a05ddd3
feat: payment check before creation and save gitea passwd in DB 2022-06-25 18:03:04 +05:30
Aravinth Manivannan beb4b29c49
feat: pass template configuration, map VM sizes, generate secrets
return gitea passwd, git pull before writing and push after add/rm
2022-06-25 18:02:03 +05:30
Aravinth Manivannan 9af5361f63
feat: load local settings 2022-06-25 18:01:39 +05:30
Aravinth Manivannan 922d0c5f81
fix: don't create additional configuration opts 2022-06-25 18:01:08 +05:30
Aravinth Manivannan 94aad8e6ea
fix: templates: load user credentials and pass dynamic configuration.
Also escape curly braces
2022-06-25 18:00:13 +05:30
Aravinth Manivannan 80d6664f0d
feat: load VM domain from settings 2022-06-25 17:57:23 +05:30
Aravinth Manivannan ec49caa973
feat: payment status checking util 2022-06-25 16:27:43 +05:30
Aravinth Manivannan e688528fa3
fix: check payment status on instance level, used to be user level 2022-06-25 16:27:26 +05:30
Aravinth Manivannan 9f55a8ced7
feat: docs: hostea infrastructure config parameters 2022-06-24 20:38:37 +05:30
Aravinth Manivannan f3324579c9
feat: utilities to add and remove VM on the Hostea repo 2022-06-24 20:35:32 +05:30
Aravinth Manivannan 1a234d402f
feat: init templates from enough docs[0]
[0]: https://enough-community.readthedocs.io/en/latest/services/hostea.html
2022-06-24 20:35:00 +05:30
Aravinth Manivannan ff8a21d9dc
feat: bootstrap infrastructure app with create_instance delete_instance
views
2022-06-24 20:34:11 +05:30
Aravinth Manivannan 04ec4037a9
feat: init gitpython and infrastructure app 2022-06-24 20:33:32 +05:30
Aravinth Manivannan 19ed720b82
feat: mv redirect if authenticated to decorator and guard other
sigin/signup views
2022-06-22 00:43:10 +05:30
Aravinth Manivannan 96e71d7c32
fix: auto-redirect authenticated user when visiting login page 2022-06-22 00:43:10 +05:30
Aravinth Manivannan f6c89999e9
feat: test account verification email 2022-06-22 00:43:10 +05:30
Aravinth Manivannan 19682874ba
feat: payments system configuration docs 2022-06-22 00:40:06 +05:30
Aravinth Manivannan d470033429
feat: implement billing with stripe
SUMMARY
    PAYMENT WORKFLOW
	1. User is redirected after a new instance is created into a view
	   that generates invoice. There are checks in place to ensure
	   invoices are not generated twice for the same VM. There is also a
	   check in place to generate invoices for time periods that are
	   already paid for
	2. User is redirected to payment form
	3. Stripe takes over
	4. If payment is successful, user is redirected to success page
	5. If payment failed, user is redirected to failure page

    PENDING INVOICES
	The user can see pending invoices on their dashboard

    PAYMENT RECEIPTS
	The user can see payment receipts on their dashboard
2022-06-22 00:37:03 +05:30
Aravinth Manivannan 760c0e90af
feat: create_instance_util test utility 2022-06-22 00:36:59 +05:30
Aravinth Manivannan 4908754b0d
feat: init billing app 2022-06-22 00:36:46 +05:30
Aravinth Manivannan 743f3447e7
feat: redirect to invoice after instance creation 2022-06-21 23:31:04 +05:30
Aravinth Manivannan bddd7a88b2
feat: link billing views in secondary nav bar 2022-06-21 23:30:20 +05:30
Aravinth Manivannan 8507129063
feat: create_oidc management command to create SSO integration for
Hostea
2022-06-19 22:25:33 +05:30
Aravinth Manivannan cc1ecaf6a0
feat: init django-oauth-toolkit 2022-06-19 22:25:27 +05:30
Aravinth Manivannan a04cbf0943
feat: password strength validation during registration and migrate tests to cope with it 2022-06-19 21:23:38 +05:30
Aravinth Manivannan faa7e924cc
feat: get_user_id management command
DESCRIPTION
    Gets the DB assigned ID associated with a username
2022-06-19 21:02:38 +05:30
Aravinth Manivannan 38619babc7
feat: improve view VM styling and show VM configuration 2022-06-19 15:23:50 +05:30
Aravinth Manivannan 429934c795
fix: insert default instance configurations using migrations scripts 2022-06-19 13:36:28 +05:30
Aravinth Manivannan 3f7f9fc1ed
fix: run migrations before testing 2022-06-18 22:20:41 +05:30
Aravinth Manivannan d5dc06be18
feat: views for listing, viewing and deleting specific VMs 2022-06-18 22:12:41 +05:30
Aravinth Manivannan 2fb1a3d0d1
fix: one user can have multiple instances; OneToOneField -> ForeignKey 2022-06-18 21:56:02 +05:30
Aravinth Manivannan 627087cf0e
feat: sudo view 2022-06-18 21:54:31 +05:30
Aravinth Manivannan 2ccf3d9679
feat: confirm access decorator
DESCRIPTION
    Some views are privileged and unauthorized execution can have
    irreversible changes. confirm_access decorator checks if the user's
    session is verified for privileged operation execution.

    If not, it will redirect user to "accounts.sudo" vie" vie" vie" view
2022-06-18 21:52:18 +05:30
Aravinth Manivannan 1e7d45d53b
fix: login redirection 2022-06-18 20:02:54 +05:30
Aravinth Manivannan ca8bb56d6c
fix: logout route was being served by wrong handler and tests 2022-06-18 19:53:26 +05:30
Aravinth Manivannan ce5694d56a
fix: create VM form styling 2022-06-18 14:07:04 +05:30
Aravinth Manivannan bdf8f6989f
chore: improve coverage 2022-06-18 13:54:03 +05:30