11locals {
22 users = jsondecode (file (var. users_data_file_path ))
3+
4+ candidate_users = {
5+ for user in local . users : user . discord . id => user
6+ if try (user. discord . username , " " ) != " "
7+ }
8+ }
9+
10+ data "external" "members" {
11+ program = [" ${ path . module } /scripts/check-members.sh" ]
12+ query = {
13+ token = var.discord_token
14+ server_id = discord_server.server.id
15+ user_ids = join (" ," , [for user in local . candidate_users : user . discord . id ])
16+ }
317}
418
519resource "discord_member_roles" "roles" {
6- for_each = { for user in local . users : user . discord . id => user if (var. env == " prod" || lookup (user, " dev" , false )) && try (user. discord . username , " " ) != " " }
20+ for_each = {
21+ for id , user in local . candidate_users : id => user
22+ if contains (jsondecode (data. external . members . result . member_ids ), id)
23+ }
724
825 server_id = discord_server. server . id
926 user_id = each. value . discord . id
1027 role {
1128 role_id = discord_role. admin . id
12- has_role = contains (each. value . roles , " admin " )
29+ has_role = contains (each. value . roles , " immich_admin " )
1330 }
1431
1532 role {
1633 role_id = discord_role. team . id
17- has_role = length (setintersection (toset (each. value . roles ), toset ([" yucca" , " team" , " admin " ]))) > 0
34+ has_role = length (setintersection (toset (each. value . roles ), toset ([" yucca" , " team" , " immich_admin " ]))) > 0
1835 }
1936
2037 role {
@@ -24,12 +41,12 @@ resource "discord_member_roles" "roles" {
2441
2542 role {
2643 role_id = discord_role. contributor . id
27- has_role = length (setintersection (toset (each. value . roles ), toset ([" contributor" , " futo" , " yucca" , " team" , " admin " ]))) > 0
44+ has_role = length (setintersection (toset (each. value . roles ), toset ([" contributor" , " futo" , " yucca" , " team" , " immich_admin " ]))) > 0
2845 }
2946
3047 role {
3148 role_id = discord_role. futo . id
32- has_role = length (setintersection (toset (each. value . roles ), toset ([" futo" , " yucca" , " team" , " admin " ]))) > 0
49+ has_role = length (setintersection (toset (each. value . roles ), toset ([" futo" , " yucca" , " team" , " immich_admin " ]))) > 0
3350 }
3451
3552 role {
0 commit comments