Группы пользователей

Всем привет у нас есть инпуты где хотим поставить профили пользователей. Пока там видны все администраторы. Есть 3 вида пользоватлей как я понимаю: V-vendor C-покупатель и A-admin Где находится схема этих пользователей? И в каком файле добавить вид пользователя, например K-курьер S- складовщик?

Как я понимаю сначало нужно создать схему для определения пользователя. Потом уже привязать к $usergroups и написать функцию выполнения задач.

Отдельной схемы для типов пользователей нет. Просто буква (значение для колонки user_type) и в коде все условия по этому параметру

Жаль. Не удобно так то. Тогда, чтобы создать определенную группу пользователей. Нам нужно просто указать в функциях и в контроллеру определенную букву и назвать его? Потом каждый раз в других функциях и контроллерах определять этого юзера?

Да. Если правильно помню, по умолчанию у такого пользователя будет функционал обычного покупателя. И модулем уже расширять его нужно

1 лайк

Спасибо за ответ! Посмотрел что да как, все функции пользователя и определение вендора и админа находится в fn.multivendor.php прочитав получил несколько седых волос :rofl:
Подумываю вывести только админа как курьера. Потому что будет сложно не ошибившись написать другого user_type

А почему не сделать через user_group?
User_type - это к какой части пользователь имеет доступ: админка, фронт, админка вендора в мульти вендоре. То есть по идее, ваш функционал больше имеет отношения именно к user_group

А вот это интересно! Нужно будет посмотреть, какие данные она в себе имеет. Потом по ним ориентироваться в функционале. А вы пробовали так делать?

Сейчас почти сделал так чтобы вместо issuer_id в бд она сохраняла courier_id благодаря этому она должна поставить админа на курьерах и появится возможность выбрать курьера. Вообще я ее сделал. Данные сохраняются т.е id админа сохранятся в таблице но при сохранении она исчезает из picker

Снимок экрана 2023-04-10 в 14.52.10

Снимок экрана 2023-04-10 в 14.54.29

На picker не видится пользователь при сохранении order.details сбрасывается. Хотя в БД сохраняется. Как сделать так чтобы не сбрасывалась? Сижу над этим уже 2 час

А все получилось тупил на одной функции :rofl:

1 лайк

Сейчас работаю над поиском этих пользователей.
Получаю ошибку: Unknown column ‘issuers.firstname’ in ‘field list’
Дополнил свой fn.cart.php. Так же проверил на не заполненность формы, типо там нет такого админа и все нормально выводит.
Нашел где ошибается:

if (in_array('issuers', $params['extra'], true )) {
        $fields[] = "CONCAT(issuers.firstname, ' ', issuers.lastname) as issuer_name";
        $fields[] = 'issuers.email as issuer_email';
    }

    if (in_array('couriers', $params['extra'], true)) {
        $fields[] = "CONCAT(couriers.firstname, ' ', couriers.lastname) as courier_name";
        $fields[] = 'couriers.email as courier_email';
    }

    if (in_array('warehousemans', $params['extra'], true)) {
        $fields[] = "CONCAT(warehousemans.firstname, ' ', warehousemans.lastname) as warehouseman_name";
        $fields[] = 'warehousemans.email as warehouseman_email';
    }

Изначально в экста добавил данные:

$default_params = [
        'page'           => 1,
        'items_per_page' => $items_per_page,
        'extra'          => ['issuers', 'invoice_docs', 'memo_docs', 'couriers', 'warehousemans'],
    ];
``` и 

if (!empty($params[‘issuer’]) && !in_array(‘issuers’, $params[‘extra’], true)) {
$params[‘extra’][] = ‘issuers’;
}

if (!empty($params['courier']) && !in_array('couriers', $params['extra'], true)) {
    $params['extra'][] = 'couriers';
}

if (!empty($params['warehouseman']) && !in_array('warehousemans', $params['extra'], true)) {
    $params['extra'][] = 'warehousemans';
}
Потом еще добавил: 

if (isset($params[‘issuer’]) && fn_string_not_empty($params[‘issuer’])) {
$issuer_name = fn_explode(’ ', $params[‘issuer’]);
$issuer_name = array_filter($issuer_name, “fn_string_not_empty”);
if (sizeof($issuer_name) == 2) {
$_condition .= db_quote(" $union_condition (issuers.firstname LIKE ?l AND issuers.lastname LIKE ?l)“, array_shift($issuer_name) . “%”, “%” . array_shift($issuer_name) . “%”);
} else {
$issuer_name = array_shift($issuer_name);
$_condition .= db_quote(” $union_condition (issuers.firstname LIKE ?l OR issuers.lastname LIKE ?l)", $issuer_name . “%”, “%” . $issuer_name . “%”);
}
}

if (isset($params['courier']) && fn_string_not_empty($params['courier'])) {
    $courier_name = fn_explode(' ', $params['courier']);
    $courier_name = array_filter($courier_name, "fn_string_not_empty");
    if (sizeof($courier_name) == 2) {
        $_condition .= db_quote(" $union_condition (couriers.firstname LIKE ?l AND couriers.lastname LIKE ?l)", array_shift($courier_name) . "%", "%" . array_shift($courier_name) . "%");
    } else {
        $courier_name = array_shift($courier_name);
        $_condition .= db_quote(" $union_condition (couriers.firstname LIKE ?l OR couriers.lastname LIKE ?l)", $courier_name . "%", "%" . $courier_name . "%");
    }
}

if (isset($params['warehouseman']) && fn_string_not_empty($params['warehouseman'])) {
    $warehouseman_name = fn_explode(' ', $params['warehouseman']);
    $warehouseman_name = array_filter($warehouseman_name, "fn_string_not_empty");
    if (sizeof($warehouseman_name) == 2) {
        $_condition .= db_quote(" $union_condition (warehousemans.firstname LIKE ?l AND warehousemans.lastname LIKE ?l)", array_shift($warehouseman_name) . "%", "%" . array_shift($warehouseman_name) . "%");
    } else {
        $warehouseman_name = array_shift($warehouseman_name);
        $_condition .= db_quote(" $union_condition (warehousemans.firstname LIKE ?l OR warehousemans.lastname LIKE ?l)", $warehouseman_name . "%", "%" . $warehouseman_name . "%");
    }
}
Может кто нибудь знает как решить эту проблему? 
Могу скинуть полный код fn.cart.php