Commit graph

32 commits

Author SHA1 Message Date
nora
92eebe783b
add portal start copy (#109) 2025-12-15 12:09:56 -05:00
24c02
8ce5102319 ralsei has a job 2025-12-09 20:47:07 -05:00
24c02
5f41bb5b60 actually wire up the thing 2025-12-09 20:45:51 -05:00
nora
0bd3d609bb
Flavortown onboarding (#97)
* add flavortown scenario and channels

* add special app support for SSO grid

* add flavortown app card

* downcase

* add onboarding scenario to program

* cooked

* RALSEI ENGINE IS A REAL ENGINE NOW
2025-12-09 20:13:24 -05:00
24c02
5f1bf6d7e4 add error on linking existing identity 2025-12-09 15:47:13 -05:00
nora
105e4b7a7c
Now you're thinking with portals! (#89)
* Extract verification flow logic into VerificationFlow concern

Move document submission handling and helper methods from
VerificationsController into a reusable concern:
- setup_document_step, handle_document_submission
- process_legal_name, process_aadhaar_number
- create_verification, document_params
- verification_should_redirect? helper

Extract document form into shared partial for reuse across
regular and portal verification flows.

* Extract address building into AddressManagement concern

Move build_address helper into a shared concern for reuse
between AddressesController and Portal::AddressesController.

* Add PortalFlow concern and base controller for external app flows

PortalFlow provides secure redirect handling for portal flows:
- Validates return URLs against registered Program redirect URIs
- Stores validated URLs in session to prevent tampering
- Allows localhost in non-production environments
- Provides redirect helpers with portal_status query param

Portal::BaseController uses logged_out layout with portal_wrapper
content block for minimal UI.

* Add portal controllers and routes for external app integration

Portal::VerificationsController handles document verification flow
triggered by external OAuth apps, with status-based redirects.

Portal::AddressesController handles address collection with manage
view for users who already have addresses.

Routes:
- GET/POST/DELETE /portal/verify
- GET/POST /portal/address
- GET /portal/address/done

Also adds make_primary member route to addresses resource.

* Add HTMX support to AddressesController for dynamic updates

Refactor AddressesController:
- Extract create/primary logic into helper methods
- Add HTMX-aware response methods for partial updates
- Support portal context detection for shared address list

Add partials:
- _address_list.html.erb: Shared address list with HTMX actions
- _edit_form.html.erb: Inline edit form for HTMX requests
- Update _form.html.erb with HTMX form attributes when target provided

Address list supports both regular and portal contexts with
appropriate HTMX targets and translations.

* Add portal views and translations

Portal views:
- verifications/document.html.erb: Document upload for portal flow
- verifications/pending.html.erb: Pending verification status
- addresses/portal.html.erb: Initial address collection form
- addresses/manage.html.erb: Address list for existing addresses

Update logged_out layout to support portal_wrapper content block
with minimal brand header for portal flows. Add HTMX CSRF header.

Add translations for portal verification and address flows.

* Add Program.official scope and update address styles

Add scope to filter HQ-official programs.

Update address styles for portal and HTMX address management:
- Improved address card layout with flex
- Add address card and button styles
- Pending verification card styles
- Portal done button styling

* fix address nit?
2025-12-09 12:46:05 -05:00
Copilot
81e7c300a0
Fix SQL query table reference from users to backend_users (#84)
* Initial plan

* Fix SQL query to use correct table name backend_users instead of users

Co-authored-by: 24c02 <163450896+24c02@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: 24c02 <163450896+24c02@users.noreply.github.com>
2025-12-08 14:12:58 -05:00
nora
20c064c563
add login_hint support (#86) 2025-12-08 14:00:09 -05:00
24c02
aa879c419a lindt 2025-12-05 21:57:28 -05:00
24c02
b5d6e5bc56 fix for signup -> oauth 2025-12-05 21:52:17 -05:00
24c02
1a3c5869f0 fix #80? 2025-12-05 18:28:04 -05:00
24c02
1391e08d5d ack! 2025-12-05 14:37:32 -05:00
nora
87bb6d4a18
Switch mailers to SES (#72)
* add premailer

* first pass at converting existing mailers

* this EIN is not yours :-P

* remove some css that probably won't work

* that was gonna bug me

* more mailers!

* s/account/auth

* rework 2fa/security mailers

* env vars for SES creds

* add OpenSSL explicitly

* use external logo image

* nuke step_up_code
2025-12-04 16:32:32 -05:00
24c02
19f65de9bc d'oh 2025-12-03 02:35:48 -05:00
24c02
c67523582c lol 2025-12-03 02:14:37 -05:00
nora
7d04469701
[Backend] UI2. (#67)
* first srcl pass!

* HOLY MFIN KBAR

* first last search

* put the borders back

* button!

* oops

* toolbar!

* lol

* bump dreamland, make kbar actually reactive?

* shorter timeout lol

* identity picker component

* nuke that lol

* seen_hints

* woah

* hint sys pt 1

* HINTS

* HINTS AND SHORTCUTS

* styles, BACKSPACE

* nav on home

* bananananana

* click, starring adam sandler

* scrool

* lint pass

* autoed complete

* shut

* brake the man

* dunno why those got unmerged

* path oopsie

* backspace on audit logs

* whitespace

* i thought i told you to shut up

* mr. brakeman
2025-12-03 01:17:37 -05:00
nora
ca58cc3bec
[Backend] Backend::User delenda est. (#66)
kill me
2025-12-03 00:45:07 -05:00
24c02
7d0a98ab11 wehhh 2025-12-03 00:44:07 -05:00
24c02
52adcae032 fix scoping edge cases 2025-12-02 17:39:49 -05:00
24c02
d0721d3ec6 placate brakeman... 2025-12-02 12:51:16 -05:00
24c02
bbc504d886 fix oauth revoke in audit log 2025-12-02 12:29:44 -05:00
24c02
87a5ac0cce because of course we're not running in controller context 2025-12-02 04:23:29 -05:00
nora
28178e0c47
OpenID connect! (#60)
* gems

* rails generate doorkeeper:openid_connect:install

* create migration

* db:migrate

* first pass at actually adding ts

* lolwut

* better consent screen

* not yet dev db! >_<

* another pass on docs
2025-12-02 01:37:19 -05:00
Copilot
fbe206cc57
Fix Identity#age to use integer date calculation instead of inaccurate in_years (#59)
* Initial plan

* Fix Identity#age to use date-based calculation instead of in_years

Co-authored-by: 24c02 <163450896+24c02@users.noreply.github.com>

* Refactor age calculation to use shared class method to avoid duplication

Co-authored-by: 24c02 <163450896+24c02@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: 24c02 <163450896+24c02@users.noreply.github.com>
2025-12-01 23:49:18 -05:00
24c02
e21d2e0919 lil' nit 2025-11-25 19:35:16 -05:00
24c02
e9daadc12d let authns live longer 2025-11-25 19:33:04 -05:00
24c02
2f67c60cf4 fix cookieoverflow? 2025-11-25 19:08:49 -05:00
24c02
5acb6dc1e6 fix localization in delete app? 2025-11-25 12:12:52 -05:00
24c02
ec0cb69726 fix: create before destroy on apps 2025-11-24 19:50:37 -05:00
24c02
fb8017348c hotfix for email 2025-11-24 14:16:40 -05:00
nora
f02fceb531
VERSION. TWO. (#42)
* INITIAL SAML SUPPORT WOO YEA BABEY

it works?

* wawa

* mwaow

* b

* WOAG

* mph

* bunch more stuff

* new OAuth screen

* add trust level to oauth apps

* [community oauth] new scopes, validate only some community ones

* bleh

* my info first pass

* sessions and 2fa

* oauth authorizations/revoke

* nuke sms

* fix drift

* remove hcid on ident#edit

* attack our rack?

* session fixation't

* first pass at stepup auth

* eye eighteen en

* fix brand

* think that does it for dev mode!

* add promote to full user button

* first crack at landing page

* better sessions

* better id edit

* better verf

* less css pass 1

* add phone no

* better cssed?

* securité

* switch from slocks

* HCA

* touch last seen at

* session fingerprinting

* improved?

* localize scopes

* add proper oauth welcome

* eepier tutorial

* how long was that like that?!

* common blankslate

* better addresses?

* [backend] fix reprovisioning and promotion

* improve addresses

* ICONS, BEAUTIFUL ICONS

* primary sidebar

* saml welcome?

* new totp flow?

* marginally better login sec

* better print for backup codes!

* MASSIVE LINT PASS

* autocompletes

* woops

* new staging

* actual login code txnl

* no more legacy slack account linking

* fake slack in staging

* no account yet?

* add samls for staging

* fix slack_staging

* lint

* frickin' xmlsec

* no validate keys ?

* AUGH

* ASGJHFGSDJFG

* shoot me

* aieeeee

* SCHEIßE

* no more attempt association on code

* believe in prefers-color-scheme

* fix verf icon

* nuke vestigial aadhaar functionality

thanks deployor!

* fix xmlsec on gh ci

* remove identity (#27)

* move idcon flashes to locale

* remove dead code impersonation logic

h/t ian!

* fix hx-confirm on delete address?

* add missing dev app locale key

* fix #28

* wait, i'm an idiot (#28)

* THERE WE GO

* add paper_trail to more stuff

* red delete btn

* more red delete btns

* THE AUDIT LOGS UPDATE

* yuge lint pass

* Fix icons (#33)

Some icons didn't have a fill nor a viewbox

* weh

* first pass at docs

* memoize docs, fix 404

* [docs] add crappy erb support

* support non-e+ flow

* fix no devmode locale

* DOCS DOCS DOCS

* tldr dev doc

* anti-clickjacking countdown (h/t @J-Meow)

* weh

* get rid of those, they do nothing for us

* dependent destroy

* find user via scim if ent

* save nav channel ids

* fix base onboarding scenario

* only unique among the living

* add SAML debug

* simplify legacy_email

* add UAT env

* we ARE

* add slack to uat

* no entity id?

* fix saml if logged out

* fix scim assignment?

* bring channels into config

* darn it

* try backoff on assign_to_workspace?? this feels problematic

* do the scim docs lie?

* that was dumb

* Revert "do the scim docs lie?"

This reverts commit 69310dbef9476f2103d7a8280966a7fdf732129b.

* Revert "try backoff on assign_to_workspace?? this feels problematic"

This reverts commit 7a5edd67aa3836df1f31d628566e9ea69589c269.

* this some bull shit

* internal tutorial by default

* 18 point something

* fixes: componentize login, no more viewcontext, parse sp-initiated saml better

* one return to.

* just send it

* fix replay bug

* fix URL in welcome docs page (#38)

* simplify login/signup flow, s/faq/terms + privacy

* no more H... we hardly knew you

* first pass at reddening

* red pt. 2

* she's red for an AMAZING reason

* lint pass

* fix tooled tips

* another docs pass

* initial pass at factorybotting docs

* scope diffing for api docs!

* wait we don't need a legend lol

* add verf status to community apps

* fricken lint

* make current_user not nomethod

* move are_we_enterprise_yet to a flipper flag

* improve slack racing

* allow not creating slack

* factorybot in prod for api docs!

* LOL, LMAO

* properly set owner on oauthorizations

* lint pass

* bypass age on existing users

* fix that...

---------

Co-authored-by: Leo <leo@wilkin.xyz>
Co-authored-by: Tom (Deployor) <129990841+deployor@users.noreply.github.com>
Co-authored-by: DaInfLoop <github@dainfloop.is-a.dev>
2025-11-24 10:52:27 -05:00
24c02
a260c265f0 initial public commit!!! 2025-09-02 13:53:47 -04:00