# Phoenix LDAP POSIX Groups Seed Data
# This file creates POSIX groups (using memberUid) WITHOUT the memberOf overlay
# Used to test GROUP_SEARCH_FILTER mode for LDAP servers that don't support memberOf
# Create organizational units
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users
dn: ou=posix-groups,dc=example,dc=com
objectClass: organizationalUnit
ou: posix-groups
description: POSIX groups (memberUid-based, no memberOf)
# Different OUs for organizational structure testing
dn: ou=IT,dc=example,dc=com
objectClass: organizationalUnit
ou: IT
description: IT Department
dn: ou=HR,dc=example,dc=com
objectClass: organizationalUnit
ou: HR
description: Human Resources Department
# Create POSIX groups using posixGroup objectClass
# NOTE: memberUid contains the USERNAME (uid), NOT the full DN
# This is the standard POSIX/RFC 2307 schema
dn: cn=admins,ou=posix-groups,dc=example,dc=com
objectClass: posixGroup
cn: admins
gidNumber: 20001
description: Phoenix Administrators (POSIX)
memberUid: admin
memberUid: multigroup
memberUid: duplicate
dn: cn=members,ou=posix-groups,dc=example,dc=com
objectClass: posixGroup
cn: members
gidNumber: 20002
description: Phoenix Members (POSIX)
memberUid: alice
memberUid: bob
memberUid: multigroup
dn: cn=viewers,ou=posix-groups,dc=example,dc=com
objectClass: posixGroup
cn: viewers
gidNumber: 20003
description: Phoenix Viewers (POSIX)
memberUid: charlie
memberUid: nodisplay
memberUid: multigroup
# Create users WITHOUT memberOf attribute
# The POSIX group membership is determined by the memberUid in the groups above
dn: uid=admin,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: admin
cn: Admin User
sn: User
givenName: Admin
displayName: Admin User
mail: admin@example.com
userPassword: password123
uidNumber: 20001
gidNumber: 20001
homeDirectory: /home/admin
dn: uid=alice,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: alice
cn: Alice Smith
sn: Smith
givenName: Alice
displayName: Alice Smith
mail: alice@example.com
userPassword: password123
uidNumber: 20002
gidNumber: 20002
homeDirectory: /home/alice
dn: uid=bob,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: bob
cn: Bob Johnson
sn: Johnson
givenName: Bob
displayName: Bob Johnson
mail: bob@example.com
userPassword: password123
uidNumber: 20003
gidNumber: 20003
homeDirectory: /home/bob
dn: uid=charlie,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: charlie
cn: Charlie Brown
sn: Brown
givenName: Charlie
displayName: Charlie Brown
mail: charlie@example.com
userPassword: password123
uidNumber: 20004
gidNumber: 20004
homeDirectory: /home/charlie
# Edge case: User with NO groups (tests wildcard "*" fallback)
dn: uid=nogroups,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: nogroups
cn: No Groups User
sn: User
givenName: No Groups
mail: nogroups@example.com
userPassword: password123
uidNumber: 20005
gidNumber: 20005
homeDirectory: /home/nogroups
# Edge case: User in MULTIPLE groups (tests role precedence - first match wins)
dn: uid=multigroup,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: multigroup
cn: Multi Group User
sn: User
givenName: Multi
displayName: Multi Group User
mail: multigroup@example.com
userPassword: password123
uidNumber: 20006
gidNumber: 20006
homeDirectory: /home/multigroup
# Edge case: User with missing displayName (tests fallback to username)
dn: uid=nodisplay,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: nodisplay
cn: No Display
sn: Display
givenName: No
mail: nodisplay@example.com
userPassword: password123
uidNumber: 20007
gidNumber: 20007
homeDirectory: /home/nodisplay
# Edge case: Duplicate usernames in different OUs (tests ambiguous search rejection)
dn: uid=duplicate,ou=IT,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: duplicate
cn: IT Duplicate
sn: Duplicate
givenName: IT
displayName: IT Admin
mail: duplicate-it@example.com
userPassword: password123
uidNumber: 20010
gidNumber: 20010
homeDirectory: /home/duplicate-it
dn: uid=duplicate,ou=HR,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: duplicate
cn: HR Duplicate
sn: Duplicate
givenName: HR
displayName: HR Admin
mail: duplicate-hr@example.com
userPassword: password123
uidNumber: 20011
gidNumber: 20011
homeDirectory: /home/duplicate-hr