setupDefaultUser = () => {
	return userModel
		.query()
		.select('id', )
		.where('is_deleted', 0)
		.first()
		.then((row) => {
			if (!row || !row.id) {
				// Create a new user and set password
				const email    = process.env.INITIAL_ADMIN_EMAIL || 'admin@example.com';
				const password = process.env.INITIAL_ADMIN_PASSWORD || 'changeme';

				logger.info('Creating a new user: ' + email + ' with password: ' + password);

				const data = {
					is_deleted: 0,
					email:      email,
					name:       'Administrator',
					nickname:   'Admin',
					avatar:     '',
					roles:      ['admin'],
				};

				return userModel
					.query()
					.insertAndFetch(data)
					.then((user) => {
						return authModel
							.query()
							.insert({
								user_id: user.id,
								type:    'password',
								secret:  password,
								meta:    {},
							})
							.then(() => {
								return userPermissionModel.query().insert({
									user_id:           user.id,
									visibility:        'all',
									proxy_hosts:       'manage',
									redirection_hosts: 'manage',
									dead_hosts:        'manage',
									streams:           'manage',
									access_lists:      'manage',
									certificates:      'manage',
								});
							});
					})
					.then(() => {
						logger.info('Initial admin setup completed');
					});
			} else if (config.debug()) {
				logger.info('Admin user setup not required');
			}
		});
}
Creates a default admin users if one doesn't already exist in the database

@returns {Promise}