Managing loaner chromebooks for students and teachers in the HUUSD school district.
at main 54 lines 1.6 kB view raw
1class AuthenticationsController < ApplicationController 2 include Authenticatable 3 before_action :ensure_authenticated, only: [:destroy] 4 before_action :ensure_not_authenticated, only: [:new, :create] 5 6 def new 7 StatsD.increment("login_page_viewed") 8 9 # Measure the time taken to process the rendering of the new page 10 StatsD.measure('view.render_login_page') do 11 if session[:user_id] 12 StatsD.increment("already_logged_in") 13 redirect_to overview_path 14 else 15 render "new" 16 end 17 end 18 end 19 20 def create 21 StatsD.increment("login_attempt") 22 23 # Measure the time taken for the authentication process 24 StatsD.measure('auth.authenticate_user') do 25 @user = User.find_by(email: auth_params[:email]) 26 if @user&.authenticate(auth_params[:password]) 27 StatsD.increment("login_successful") 28 session[:user_id] = @user.id 29 StatsD.set('users.unique_logged_in', @user.id) # Track unique users logging in 30 redirect_to overview_path 31 else 32 StatsD.increment("login_failed") 33 flash[:danger] = "Login failed. Please try again." 34 render "new" 35 end 36 end 37 end 38 39 def destroy 40 # Measure the time taken to process the logout action 41 StatsD.measure('auth.process_logout') do 42 StatsD.increment("logout") 43 session[:user_id] = nil 44 StatsD.event('User Logged Out', "User with ID #{session[:user_id]} logged out") # Log an event for logout 45 redirect_to login_path 46 end 47 end 48 49 private 50 51 def auth_params 52 params.require(:user).permit(:email, :password) 53 end 54end