mirror of
https://github.com/System-End/identity-vault.git
synced 2026-04-19 23:22:50 +00:00
* 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>
69 lines
1.7 KiB
Ruby
69 lines
1.7 KiB
Ruby
class Slack::InteractivityController < ActionController::API
|
|
before_action :verify_slack_request
|
|
before_action :set_current_identity
|
|
|
|
attr_reader :current_identity
|
|
|
|
def create
|
|
payload = JSON.parse(params[:payload])
|
|
|
|
case payload["type"]
|
|
when "block_actions"
|
|
handle_block_actions(payload)
|
|
else
|
|
head :ok
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def handle_block_actions(payload)
|
|
action = payload.dig("actions", 0)
|
|
return head :ok unless action
|
|
|
|
action_id = action["action_id"]
|
|
|
|
case action_id
|
|
when "coc_continue"
|
|
Tutorial::CocContinueJob.perform_later(current_identity)
|
|
when "tutorial_agree"
|
|
Tutorial::AgreeJob.perform_later(current_identity)
|
|
end
|
|
|
|
head :ok
|
|
end
|
|
|
|
def set_current_identity
|
|
payload = JSON.parse(params[:payload])
|
|
slack_id = payload.dig("user", "id")
|
|
|
|
@current_identity = Identity.find_by(slack_id: slack_id)
|
|
|
|
unless @current_identity
|
|
Rails.logger.warn "Slack interactivity from unknown user: #{slack_id}"
|
|
head :unauthorized
|
|
nil
|
|
end
|
|
end
|
|
|
|
def verify_slack_request
|
|
timestamp = request.headers["X-Slack-Request-Timestamp"]
|
|
signature = request.headers["X-Slack-Signature"]
|
|
|
|
return head :unauthorized unless timestamp && signature
|
|
|
|
if (Time.now.to_i - timestamp.to_i).abs > 60 * 5
|
|
return head :unauthorized
|
|
end
|
|
|
|
signing_secret = ENV["SLACK_SIGNING_SECRET"]
|
|
return head :unauthorized unless signing_secret
|
|
|
|
sig_basestring = "v0:#{timestamp}:#{request.raw_post}"
|
|
my_signature = "v0=" + OpenSSL::HMAC.hexdigest("SHA256", signing_secret, sig_basestring)
|
|
|
|
unless ActiveSupport::SecurityUtils.secure_compare(my_signature, signature)
|
|
head :unauthorized
|
|
end
|
|
end
|
|
end
|