Managing loaner chromebooks for students and teachers in the HUUSD school district.
1# == Schema Information
2#
3# Table name: authentications
4#
5# id :integer not null, primary key
6# created_at :datetime not null
7# updated_at :datetime not null
8#
9class Authentication < ApplicationRecord
10 include AASM
11
12 # Track creation of an Authentication instance
13 after_create :measure_creation
14
15 # Track destruction of an Authentication instance
16 after_destroy :measure_destruction
17
18 def initialize(session, user)
19 StatsD.increment("authentication.initialized")
20 StatsD.measure("authentication.initialization_time") do
21 session[:current_authentication] = self
22 @user_id = user.id
23 end
24 end
25
26 def destroy(session)
27 StatsD.increment("authentication.destroyed")
28 StatsD.measure("authentication.destruction_time") do
29 session[:current_authentication] = nil
30 @user_id = nil
31 end
32 end
33
34 def user
35 StatsD.increment("authentication.user_lookup")
36 StatsD.measure("authentication.user_lookup_time") do
37 User.find_by(id: @user_id)
38 end
39 end
40
41 def user=(user)
42 StatsD.increment("authentication.user_set")
43 StatsD.measure("authentication.user_set_time") do
44 @user_id = user.id
45 end
46 end
47
48 private
49
50 def measure_creation
51 StatsD.measure("authentication.creation_time") do
52 track_creation
53 end
54 end
55
56 def track_creation
57 StatsD.increment("authentication.created")
58 end
59
60 def measure_destruction
61 StatsD.measure("authentication.destruction_time") do
62 track_destruction
63 end
64 end
65
66 def track_destruction
67 StatsD.increment("authentication.deleted")
68 end
69end