feat: migrate auth from supabase to better auth (#596)

* feat: add README for @cio/db package and remove existingAccounts.json

* load session, load profile and organization, add create profile hook

* chore: cache session request

The trick was passing all the cookies to the backend. Previously I was only passing the better-auth.session_token and not better-auth.session_data. Read about the difference here https://www.better-auth.com/docs/concepts/cookies#custom-cookies

* feat: login, logout, onboarding, verify email, reset password.

* feat: complete change email and email verification

* feat: standardise how we make rpc calls and create org endpoints

* fix ui errors

* fix: handle potential undefined customerId and standardize avatar URL property

* refactor: standardize custom domain handling and update telegram chat ID references

* chore: add tailwind prefix to @cio/ui

this fixed the media query issues because  @cio/ui classes were overriding this dashboard tailwind build

* chore: clean up org sidebar

* chore: persist mode state

* feat: implement order breadcrumbs

* chore: upgrade to better auth 1.4

* chore: address common auth flow bugs and setup app for others to setup locally.
This commit is contained in:
Rotimi Best
2025-11-24 01:00:50 +01:00
committed by GitHub
parent 24741644d6
commit a3924100dd
567 changed files with 22364 additions and 13437 deletions
@@ -72,7 +72,7 @@
"full_name": "Full Name",
"password": "Your Password",
"confirm_password": "Confirm Password",
"password_helper_message": "Password must be more than 6 characters",
"password_helper_message": "Password must be more than 8 characters",
"create_account": "Create Account"
},
"validation": {
@@ -117,7 +117,10 @@
"heading": "Personal Information",
"full_name": "Full Name",
"username": "Username",
"email": "Email"
"email": "Email",
"confirm": "Confirm",
"cancel": "Cancel",
"email_change_verification_note": "A verification email has been sent to your current email address. The new email will not be in effect until you accept the verification email."
},
"update_profile": "Update Profile",
"logout": "Log out"
@@ -272,6 +275,7 @@
},
"org_navigation": {
"platform": "Platform",
"dashboard": "Dashboard",
"courses": "Courses",
"community": "Community",
@@ -1661,6 +1665,21 @@
},
"email": {
"not_valid": "Not valid email"
},
"generic": {
"invalid_type": "Invalid type{expected, select, undefined{} other{. Expected {expected}}}{received, select, undefined{} other{ (received {received})}}",
"too_big": "Value is too large{maximum, select, undefined{} other{. Maximum {maximum}}}",
"too_small": "Value is too small{minimum, select, undefined{} other{. Minimum {minimum}}}",
"invalid_format": "Invalid format{validation, select, undefined{} other{ for {validation}}}",
"not_multiple_of": "Value must be a multiple of {multipleOf}",
"unrecognized_keys": "Contains unrecognized keys{keys, select, undefined{} other{: {keys}}}",
"invalid_union": "Invalid value for provided options{unionErrors, select, undefined{} other{. {unionErrors} option(s) failed}}",
"invalid_key": "Invalid key{key, select, undefined{} other{: {key}}}",
"invalid_element": "Invalid element{index, select, undefined{} other{ at index {index}}}",
"invalid_value": "Invalid value{expected, select, undefined{} other{. Expected {expected}}}{received, select, undefined{} other{ (received {received})}}",
"custom": "{message}",
"required_field": "This field is required",
"invalid_field": "Invalid value"
}
},