1use utf8; 2package App::Netdisco::DB::Result::Virtual::UserRole; 3 4use strict; 5use warnings; 6 7use base 'DBIx::Class::Core'; 8 9__PACKAGE__->table_class('DBIx::Class::ResultSource::View'); 10 11__PACKAGE__->table("user_role"); 12__PACKAGE__->result_source_instance->is_virtual(1); 13__PACKAGE__->result_source_instance->view_definition(<<ENDSQL 14 SELECT username, 'port_control' AS role FROM users 15 WHERE port_control 16 UNION 17 SELECT username, 'admin' AS role FROM users 18 WHERE admin 19 UNION 20 SELECT username, 'ldap' AS role FROM users 21 WHERE ldap 22 UNION 23 SELECT username, 'radius' AS role FROM users 24 WHERE radius 25 UNION 26 SELECT username, 'tacacs' AS role FROM users 27 WHERE tacacs 28 UNION 29 SELECT username, 'api' AS role FROM users 30 WHERE token IS NOT NULL AND token_from IS NOT NULL 31 AND token_from > (EXTRACT(EPOCH FROM now()) - ?) 32ENDSQL 33); 34 35__PACKAGE__->add_columns( 36 'username' => { data_type => 'text' }, 37 'role' => { data_type => 'text' }, 38); 39 401; 41