64 lines
1.5 KiB
Ruby
64 lines
1.5 KiB
Ruby
|
class UsersController < ApplicationController
|
||
|
def index
|
||
|
@total_users = User.all().length
|
||
|
if params[:key_search]
|
||
|
@users = User.where('id LIKE :key_search OR username LIKE :key_search', key_search: "%#{params[:key_search]}%").page(params[:page])
|
||
|
else
|
||
|
@users = User.order(:id).page(params[:page])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def show
|
||
|
@user = User.find(params[:id])
|
||
|
@app_title = @user.username
|
||
|
end
|
||
|
|
||
|
def validate_key
|
||
|
row = Session.find_by_token(params[:key])
|
||
|
|
||
|
if row \
|
||
|
and (time_delta(Time.now.utc, row.updated_at) < 10.minutes) \
|
||
|
and (row.is_admin or row.user_id == params[:id])
|
||
|
@user = User.find(params[:id])
|
||
|
session[:identified] = true
|
||
|
session[:identified_at] = Time.now.utc
|
||
|
|
||
|
redirect_to edit_user_path(id: @user.id) and return
|
||
|
else
|
||
|
redirect_to user_path(id: params[:id]), flash: {error: true} and return
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def edit
|
||
|
@user = User.find(params[:id])
|
||
|
if session[:identified] and (time_delta(Time.now.utc, session[:identified_at]) < 10.minutes)
|
||
|
@app_title = @user.username
|
||
|
render "users/edit"
|
||
|
else
|
||
|
redirect_to user_path(id: params[:id]), flash: {error: true} and return
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
@user = User.find(params[:id])
|
||
|
@user.update(update_post_params)
|
||
|
redirect_to user_path(id: @user.id)
|
||
|
end
|
||
|
|
||
|
def destroy
|
||
|
@user = User.find(params[:id])
|
||
|
@user.destroy
|
||
|
redirect_to users_path
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def update_post_params
|
||
|
params.require(:user).permit(:os, :config, :pays)
|
||
|
end
|
||
|
|
||
|
def time_delta(new, old)
|
||
|
Time.parse(new.to_s) - Time.parse(old.to_s)
|
||
|
end
|
||
|
end
|