Skip to content

Commit e6f4810

Browse files
authored
Audit Logs: Revamp of audit logs application (#86)
* audit logs revamp fully designed out * adds changes from review * fixes redirect
1 parent 3c27509 commit e6f4810

17 files changed

+706
-341
lines changed

ruby-audit-logs-example/.ruby-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.9.0
1+
2.7.2

ruby-audit-logs-example/Gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ source 'https://rubygems.org'
44

55
gem 'dotenv', '2.7.6'
66
gem 'sinatra', '2.2.0'
7-
gem 'workos', '2.9.0'
7+
gem 'workos', '2.12.0'
88

ruby-audit-logs-example/Gemfile.lock

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
GEM
22
remote: https://rubygems.org/
33
specs:
4+
coderay (1.1.3)
45
dotenv (2.7.6)
6+
method_source (1.0.0)
57
mustermann (1.1.2)
68
ruby2_keywords (~> 0.0.1)
9+
pry (0.14.2)
10+
coderay (~> 1.1)
11+
method_source (~> 1.0)
712
rack (2.2.4)
813
rack-protection (2.2.0)
914
rack
@@ -13,21 +18,19 @@ GEM
1318
rack (~> 2.2)
1419
rack-protection (= 2.2.0)
1520
tilt (~> 2.0)
16-
sinatra-flash (0.3.0)
17-
sinatra (>= 1.0.0)
18-
sorbet-runtime (0.5.10461)
21+
sorbet-runtime (0.5.10667)
1922
tilt (2.0.11)
20-
workos (2.5.0)
23+
workos (2.9.0)
2124
sorbet-runtime (~> 0.5)
2225

2326
PLATFORMS
2427
ruby
2528

2629
DEPENDENCIES
2730
dotenv (= 2.7.6)
31+
pry
2832
sinatra (= 2.2.0)
29-
sinatra-flash
30-
workos (= 2.5.0)
33+
workos (= 2.9.0)
3134

3235
BUNDLED WITH
33-
2.3.23
36+
2.3.19

ruby-audit-logs-example/app.rb

+85-52
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require 'workos'
66
require 'date'
77
require_relative 'audit_log_events.rb'
8+
require 'pry'
89

910
# Pull API key and Client ID from ENV variable
1011
WorkOS.key = ENV['WORKOS_API_KEY']
@@ -22,77 +23,118 @@
2223
)
2324

2425
get '/' do
26+
before = params[:before]
27+
after = params[:after]
28+
if !before
29+
@organizations = WorkOS::Organizations.list_organizations(
30+
limit: 5
31+
)
32+
else
33+
@organizations = WorkOS::Organizations.list_organizations(
34+
limit: 5,
35+
before: before,
36+
after: after
37+
)
38+
end
39+
@before = @organizations.list_metadata["before"]
40+
@after = @organizations.list_metadata["after"]
2541
erb :login, :layout => :layout
2642
end
2743

28-
post '/set_org' do
29-
@organization_id = params[:org]
30-
31-
session[:organization_id] = @organization_id
32-
33-
organization = WorkOS::Organizations.get_organization(
34-
id: @organization_id
35-
)
36-
37-
@org_name = organization.name
38-
session[:organization_name] = @org_name
39-
erb :send_events, :layout => :layout
40-
end
4144

4245
get '/set_org' do
43-
@organization_id = session[:organization_id]
44-
@org_name = session[:organization_name]
46+
@organization = WorkOS::Organizations.get_organization(
47+
id: params[:id]
48+
)
49+
@today_iso = Time.now.utc.iso8601
50+
@last_month_iso = (Time.now - (30 * 86400)).utc.iso8601
4551
erb :send_events, :layout => :layout
4652
end
4753

48-
post '/send_event' do
49-
event_type = params[:event]
50-
@organization_id = session[:organization_id]
51-
@org_name = session[:organization_name]
52-
53-
events = [
54-
$user_signed_in,
55-
$user_logged_out,
56-
$user_organization_deleted,
57-
$user_connection_deleted,
58-
]
59-
60-
event = events[event_type.to_i]
54+
get '/events' do
55+
link = WorkOS::Portal.generate_link(
56+
organization: params[:organization_id],
57+
intent: params[:intent],
58+
)
59+
redirect link
60+
end
6161

62+
post '/send_events' do
63+
64+
organization_id = params["organization_id"]
65+
66+
event = {
67+
"action": "user.organization_deleted",
68+
"version": params[:event_version].to_i,
69+
"occurred_at": Time.now.utc.iso8601,
70+
"actor": {
71+
"type": params[:actor_type],
72+
"name": params[:actor_name],
73+
"id": "user_01GBNJC3MX9ZZJW1FSTF4C5938",
74+
},
75+
"targets": [
76+
{
77+
"type": params[:target_type],
78+
"name": params[:target_name],
79+
"id": "team_01GBNJD4MKHVKJGEWK42JNMBGS",
80+
},
81+
],
82+
"context": {
83+
"location": "123.123.123.123",
84+
"user_agent": "Chrome/104.0.0.0",
85+
},
86+
}
6287
WorkOS::AuditLogs.create_event(
63-
organization: @organization_id,
64-
event: event
88+
organization: organization_id,
89+
event: event,
6590
)
91+
92+
redirect to("/set_org?id=#{organization_id}")
6693

67-
erb :send_events, :layout => :layout
68-
end
6994

70-
get '/export_events' do
71-
@organization_id = session[:organization_id]
72-
@org_name = session[:organization_name]
73-
erb :export_events, :layout => :layout
7495
end
7596

97+
7698
post '/get_events' do
77-
organization_id = session[:organization_id]
99+
100+
organization_id = params[:organization_id]
101+
78102
event_type = params[:event]
79103
today = DateTime.now.to_s
80104
last_month = DateTime.now.prev_month.to_s
81-
105+
if params[:filter_actions] != ""
106+
actions = params[:filter_actions]
107+
else
108+
actions = nil
109+
end
110+
111+
if params[:filter_actors] != ""
112+
actors = params[:filter_actors]
113+
else
114+
actors = nil
115+
end
116+
117+
if params[:filter_targets] != ""
118+
targets = params[:filter_targets]
119+
else
120+
targets = nil
121+
end
122+
82123
if event_type == 'generate_csv'
83124
audit_log_export = WorkOS::AuditLogs.create_export(
84125
organization: organization_id,
85-
range_start: last_month,
86-
range_end: today
126+
range_start: params[:range_start],
127+
range_end: params[:range_end],
128+
actions: actions,
129+
actors: actors,
130+
targets: targets
87131
)
88132
session[:export_id] = audit_log_export.id
89-
puts audit_log_export.id
90-
redirect '/export_events'
133+
redirect to("/set_org?id=#{organization_id}")
91134
end
92135

93136
if event_type == 'access_csv'
94137
export_id = session[:export_id].to_s
95-
puts export_id
96138
audit_log_export = WorkOS::AuditLogs.get_export(
97139
id: export_id
98140
)
@@ -102,12 +144,3 @@
102144
end
103145

104146
end
105-
106-
107-
# Logout a user
108-
get '/logout' do
109-
session[:organization_id] = nil
110-
session[:organization_name] = nil
111-
session[:export_id] = nil
112-
redirect '/'
113-
end
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)