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