03_administrator.ymlΒΆ

---
# Ensure an admin user exists (when SSO is disabled) and can administer XWiki.

- name: "⬇️ XWIKI | Fetch REST session + form token (admin write ops)"
  include_tasks: utils/rest_session.yml

- name: "βœ… XWIKI | Ensure user page exists: XWiki.{{ XWIKI_ADMIN_USER }}"
  uri_retry:
    url: "{{ [XWIKI_REST_XWIKI_PAGES, XWIKI_ADMIN_USER | urlencode] | url_join }}"
    method: PUT
    url_username: "{{ XWIKI_SUPERADMIN_USERNAME }}"
    url_password: "{{ XWIKI_SUPERADMIN_PASSWORD }}"
    force_basic_auth: true
    status_code: [201, 202, 204, 200]
    headers: "{{ xwiki_rest_headers_write }}"
    body: "{{ lookup('template', 'xml/user/page.xml.j2') }}"
  register: _user_page

- name: "πŸ”Ž XWIKI | Check if XWikiUsers object exists"
  uri_retry:
    url: "{{ [XWIKI_REST_XWIKI_PAGES, XWIKI_ADMIN_USER | urlencode, 'objects'] | url_join }}?classname=XWiki.XWikiUsers"
    method: GET
    url_username: "{{ XWIKI_SUPERADMIN_USERNAME }}"
    url_password: "{{ XWIKI_SUPERADMIN_PASSWORD }}"
    force_basic_auth: true
    status_code: [200, 404]
  register: _users_obj_list

- name: "βž• XWIKI | Add XWiki.XWikiUsers object"
  uri_retry:
    url: "{{ [XWIKI_REST_XWIKI_PAGES, XWIKI_ADMIN_USER | urlencode, 'objects'] | url_join }}"
    method: POST
    url_username: "{{ XWIKI_SUPERADMIN_USERNAME }}"
    url_password: "{{ XWIKI_SUPERADMIN_PASSWORD }}"
    force_basic_auth: true
    status_code: [201, 200]
    headers: "{{ xwiki_rest_headers_write }}"
    body: "{{ lookup('template', 'xml/user/xwikiusers_object.xml.j2') }}"
  when: _users_obj_list.status == 404 or ('<object' not in (_users_obj_list.content | default('')))
  register: _user_obj_created

- block:
    - name: "βœ… XWIKI | Ensure {{ XWIKI_ADMIN_GROUP_PAGE }} page exists"
      uri_retry:
        url: "{{ [XWIKI_REST_XWIKI_PAGES, XWIKI_ADMIN_GROUP_PAGE] | url_join }}"
        method: PUT
        url_username: "{{ XWIKI_SUPERADMIN_USERNAME }}"
        url_password: "{{ XWIKI_SUPERADMIN_PASSWORD }}"
        force_basic_auth: true
        status_code: [201, 202, 204, 200]
        headers: "{{ xwiki_rest_headers_write }}"
        body: "{{ lookup('template', 'xml/xwiki_admin_group/page.xml.j2') }}"
    - name: "βœ… XWIKI | Ensure user is in {{ XWIKI_ADMIN_GROUP_PAGE }}"
      uri_retry:
        url: "{{ [XWIKI_REST_XWIKI_PAGES, XWIKI_ADMIN_GROUP_PAGE, 'objects'] | url_join }}"
        method: POST
        url_username: "{{ XWIKI_SUPERADMIN_USERNAME }}"
        url_password: "{{ XWIKI_SUPERADMIN_PASSWORD }}"
        force_basic_auth: true
        status_code: [201, 200]
        headers: "{{ xwiki_rest_headers_write }}"
        body: "{{ lookup('template', 'xml/xwiki_admin_group/member_object.xml.j2') }}"
  when: not (XWIKI_SSO_ENABLED | bool)