---

# this check must be repeated for each user
# even if it's been done before
- name: verify AllowGroups directive
  ansible.builtin.command:
    cmd: "grep -Er '^AllowGroups' /etc/ssh"
  changed_when: False
  failed_when: False
  check_mode: no
  register: grep_allowgroups_ssh
  when:
    - ansible_distribution_major_version is version('11', '<=')

- name: "Add AllowGroups sshd directive with '{{ evolinux_ssh_group }}'"
  ansible.builtin.lineinfile:
    dest: /etc/ssh/sshd_config
    line: "\nAllowGroups {{ evolinux_ssh_group }}"
    insertafter: 'Subsystem'
    validate: '/usr/sbin/sshd -t -f %s'
  notify: reload sshd
  when:
    - ansible_distribution_major_version is version('11', '<=')
    - grep_allowgroups_ssh.rc != 0

- name: "Append '{{ evolinux_ssh_group }}' to AllowGroups sshd directive"
  ansible.builtin.replace:
    dest: /etc/ssh/sshd_config
    regexp: '^(AllowGroups ((?!\b{{ evolinux_ssh_group }}\b).)*)$'
    replace: '\1 {{ evolinux_ssh_group }}'
    validate: '/usr/sbin/sshd -t -f %s'
  notify: reload sshd
  when:
    - ansible_distribution_major_version is version('11', '<=')
    - grep_allowgroups_ssh.rc == 0

- name: "Add AllowGroups sshd directive with '{{ evolinux_ssh_group }}'"
  ansible.builtin.lineinfile:
    path: /etc/ssh/sshd_config.d/z-evolinux-users.conf
    line: "AllowGroups {{ evolinux_ssh_group }}"
    create: yes
    mode: "0644"
    validate: '/usr/sbin/sshd -t -f %s'
  when:
    - ansible_distribution_major_version is version('12', '>=')
