Users and Roles - duckduckgo/community-platform GitHub Wiki
How do we ascertain the user class? Are they an admin? A community manager?
Let's have a look at the schema:
ddgc=# \d users
Table "public.users"
Column | Type | Modifiers
----------------------------+--------------------------+----------------------------------------------------
id | integer | not null default nextval('users_id_seq'::regclass)
username | text | not null
public | integer | not null default 0
privacy | integer | not null default 1
email_notification_content | integer | not null default 1
admin | integer | not null default 0
ghosted | integer | not null default 1
ignore | integer | not null default 0
email | text |
gravatar_email | text |
userpage | text |
data | text |
notes | text |
profile_media_id | bigint |
created | timestamp with time zone | not null
updated | timestamp with time zone | not null
roles | text | default ''::text
flags | text | not null default '[]'::text
Well, admin users have the admin
field set to 1. When an admin changes user roles, flags
is set:
ddgc=# select flags from users where flags != '[]';
flags
-------------------
["forum_manager","idea_manager"]
(1 row)
And the User model has all the requisite code for deciding which flags
are set:
sub is {
my ( $self, $flag ) = @_;
return 1 if $self->admin;
return $self->has_flag($flag);
}
What is the roles
column for? Stay tuned!