Description:
fig bugs in login report
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r858:21c0ea2ca2c0 - - 2 files changed: 7 inserted, 6 deleted

@@ -51,50 +51,48
51 end
51 end
52
52
53 def authorization_by_roles(allowed_roles)
53 def authorization_by_roles(allowed_roles)
54 return false unless check_valid_login
54 return false unless check_valid_login
55 unless @current_user.roles.detect { |role| allowed_roles.member?(role.name) }
55 unless @current_user.roles.detect { |role| allowed_roles.member?(role.name) }
56 unauthorized_redirect
56 unauthorized_redirect
57 return false
57 return false
58 end
58 end
59 end
59 end
60
60
61 def testcase_authorization
61 def testcase_authorization
62 #admin always has privileged
62 #admin always has privileged
63 if @current_user.admin?
63 if @current_user.admin?
64 return true
64 return true
65 end
65 end
66
66
67 unauthorized_redirect unless GraderConfiguration["right.view_testcase"]
67 unauthorized_redirect unless GraderConfiguration["right.view_testcase"]
68 end
68 end
69
69
70 def unique_visitor_id
70 def unique_visitor_id
71 unless cookies.encrypted[:uuid]
71 unless cookies.encrypted[:uuid]
72 value = SecureRandom.uuid
72 value = SecureRandom.uuid
73 cookies.encrypted[:uuid] = { value: value, expires: 20.year }
73 cookies.encrypted[:uuid] = { value: value, expires: 20.year }
74 end
74 end
75 - puts "encrypt " + cookies.encrypted[:uuid]
76 - puts cookies[:uuid]
77 end
75 end
78
76
79 protected
77 protected
80
78
81 #redirect to root (and also force logout)
79 #redirect to root (and also force logout)
82 #if the user is not logged_in or the system is in "ADMIN ONLY" mode
80 #if the user is not logged_in or the system is in "ADMIN ONLY" mode
83 def check_valid_login
81 def check_valid_login
84 #check if logged in
82 #check if logged in
85 unless session[:user_id]
83 unless session[:user_id]
86 if GraderConfiguration[SINGLE_USER_MODE_CONF_KEY]
84 if GraderConfiguration[SINGLE_USER_MODE_CONF_KEY]
87 unauthorized_redirect('You need to login but you cannot log in at this time')
85 unauthorized_redirect('You need to login but you cannot log in at this time')
88 else
86 else
89 unauthorized_redirect('You need to login')
87 unauthorized_redirect('You need to login')
90 end
88 end
91 return false
89 return false
92 end
90 end
93
91
94 # check if run in single user mode
92 # check if run in single user mode
95 if GraderConfiguration[SINGLE_USER_MODE_CONF_KEY]
93 if GraderConfiguration[SINGLE_USER_MODE_CONF_KEY]
96 if @current_user==nil || (!@current_user.admin?)
94 if @current_user==nil || (!@current_user.admin?)
97 unauthorized_redirect('You cannot log in at this time')
95 unauthorized_redirect('You cannot log in at this time')
98 return false
96 return false
99 end
97 end
100 end
98 end
@@ -98,92 +98,95
98 end
98 end
99 end
99 end
100 @scorearray << ustat
100 @scorearray << ustat
101 end
101 end
102 if params[:commit] == 'download csv' then
102 if params[:commit] == 'download csv' then
103 csv = gen_csv_from_scorearray(@scorearray,@problems)
103 csv = gen_csv_from_scorearray(@scorearray,@problems)
104 send_data csv, filename: 'last_score.csv'
104 send_data csv, filename: 'last_score.csv'
105 else
105 else
106 render template: 'user_admin/user_stat'
106 render template: 'user_admin/user_stat'
107 end
107 end
108
108
109 end
109 end
110
110
111 def login
111 def login
112 end
112 end
113
113
114 def login_summary_query
114 def login_summary_query
115 @users = Array.new
115 @users = Array.new
116
116
117 date_and_time = '%Y-%m-%d %H:%M'
117 date_and_time = '%Y-%m-%d %H:%M'
118 begin
118 begin
119 md = params[:since_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
119 md = params[:since_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
120 @since_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
120 @since_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
121 rescue
121 rescue
122 - @since_time = DateTime.new(1000,1,1)
122 + @since_time = Time.zone.now
123 end
123 end
124 + puts @since_time
124 begin
125 begin
125 md = params[:until_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
126 md = params[:until_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
126 @until_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
127 @until_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
127 rescue
128 rescue
128 @until_time = DateTime.new(3000,1,1)
129 @until_time = DateTime.new(3000,1,1)
129 end
130 end
130
131
131 record = User
132 record = User
132 .left_outer_joins(:logins).group('users.id')
133 .left_outer_joins(:logins).group('users.id')
133 .where("logins.created_at >= ? AND logins.created_at <= ?",@since_time, @until_time)
134 .where("logins.created_at >= ? AND logins.created_at <= ?",@since_time, @until_time)
134 case params[:users]
135 case params[:users]
135 when 'enabled'
136 when 'enabled'
136 record = record.where(enabled: true)
137 record = record.where(enabled: true)
137 when 'group'
138 when 'group'
138 record = record.joins(:groups).where(groups: {id: params[:groups]}) if params[:groups]
139 record = record.joins(:groups).where(groups: {id: params[:groups]}) if params[:groups]
139 end
140 end
140
141
141 record = record.pluck("users.id,users.login,users.full_name,count(logins.created_at),min(logins.created_at),max(logins.created_at)")
142 record = record.pluck("users.id,users.login,users.full_name,count(logins.created_at),min(logins.created_at),max(logins.created_at)")
142 record.each do |user|
143 record.each do |user|
143 x = Login.where("user_id = ? AND created_at >= ? AND created_at <= ?",
144 x = Login.where("user_id = ? AND created_at >= ? AND created_at <= ?",
144 user[0],@since_time,@until_time)
145 user[0],@since_time,@until_time)
145 .pluck(:ip_address).uniq
146 .pluck(:ip_address).uniq
147 + puts user[4]
148 + puts user[5]
146 @users << { id: user[0],
149 @users << { id: user[0],
147 login: user[1],
150 login: user[1],
148 full_name: user[2],
151 full_name: user[2],
149 count: user[3],
152 count: user[3],
150 - min: user[4],
153 + min: user[4].in_time_zone,
151 - max: user[5],
154 + max: user[5].in_time_zone,
152 ip: x
155 ip: x
153 }
156 }
154 end
157 end
155 end
158 end
156
159
157 def login_detail_query
160 def login_detail_query
158 @logins = Array.new
161 @logins = Array.new
159
162
160 date_and_time = '%Y-%m-%d %H:%M'
163 date_and_time = '%Y-%m-%d %H:%M'
161 begin
164 begin
162 md = params[:since_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
165 md = params[:since_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
163 @since_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
166 @since_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
164 rescue
167 rescue
165 - @since_time = DateTime.new(1000,1,1)
168 + @since_time = Time.zone.now
166 end
169 end
167 begin
170 begin
168 md = params[:until_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
171 md = params[:until_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
169 @until_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
172 @until_time = Time.zone.local(md[1].to_i,md[2].to_i,md[3].to_i,md[4].to_i,md[5].to_i)
170 rescue
173 rescue
171 @until_time = DateTime.new(3000,1,1)
174 @until_time = DateTime.new(3000,1,1)
172 end
175 end
173
176
174 @logins = Login.includes(:user).where("logins.created_at >= ? AND logins.created_at <= ?",@since_time, @until_time)
177 @logins = Login.includes(:user).where("logins.created_at >= ? AND logins.created_at <= ?",@since_time, @until_time)
175 case params[:users]
178 case params[:users]
176 when 'enabled'
179 when 'enabled'
177 @logins = @logins.where(users: {enabled: true})
180 @logins = @logins.where(users: {enabled: true})
178 when 'group'
181 when 'group'
179 @logins = @logins.joins(user: :groups).where(user: {groups: {id: params[:groups]}}) if params[:groups]
182 @logins = @logins.joins(user: :groups).where(user: {groups: {id: params[:groups]}}) if params[:groups]
180 end
183 end
181 end
184 end
182
185
183 def submission
186 def submission
184 end
187 end
185
188
186 def submission_query
189 def submission_query
187 @submissions = Submission
190 @submissions = Submission
188 .includes(:problem).includes(:user).includes(:language)
191 .includes(:problem).includes(:user).includes(:language)
189
192
You need to be logged in to leave comments. Login now