35 lines
890 B
Ruby
35 lines
890 B
Ruby
|
module Gitlab
|
||
|
module Database
|
||
|
# Model that can be used for querying permissions of a SQL user.
|
||
|
class Grant < ActiveRecord::Base
|
||
|
self.table_name =
|
||
|
if Database.postgresql?
|
||
|
'information_schema.role_table_grants'
|
||
|
else
|
||
|
'mysql.user'
|
||
|
end
|
||
|
|
||
|
def self.scope_to_current_user
|
||
|
if Database.postgresql?
|
||
|
where('grantee = user')
|
||
|
else
|
||
|
where("CONCAT(User, '@', Host) = current_user()")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Returns true if the current user can create and execute triggers on the
|
||
|
# given table.
|
||
|
def self.create_and_execute_trigger?(table)
|
||
|
priv =
|
||
|
if Database.postgresql?
|
||
|
where(privilege_type: 'TRIGGER', table_name: table)
|
||
|
else
|
||
|
where(Trigger_priv: 'Y')
|
||
|
end
|
||
|
|
||
|
priv.scope_to_current_user.any?
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|