/home/smartonegroup/public_html/system/system/controllers/password_manager.php
<?php
/*
|--------------------------------------------------------------------------
| Controller
|--------------------------------------------------------------------------
|
*/

_auth();
$ui->assign('selected_navigation', 'util');
$ui->assign('_title', $_L['Password Manager'] . '- ' . $config['CompanyName']);
$action = route(1, 'manage');
$user = authenticate_admin();

if (!has_access($user->roleid, 'password_manager')) {
    permissionDenied();
}

switch ($action) {
    case 'manage':
        if (has_access($user->roleid, 'password_manager', 'all_data')) {
            $passwords = PasswordManager::all();
        } else {
            $passwords = PasswordManager::where('admin_id', $user->id)->get();
        }

        $clients = Contact::select('id', 'account')->get();

        $cls = [];

        foreach ($clients as $cl) {
            $cls[$cl->id] = $cl->account;
        }

        view('password_manager', [
            'passwords' => $passwords,
            'cls' => $cls,
        ]);

        break;

    case 'modal_password':
        $id = route(2);

        $edit = false;

        if ($id == '') {
            $password = [
                'id' => '',
                'client_id' => '',
                'name' => '',
                'url' => '',
                'username' => '',
                'password' => '',
                'notes' => '',
            ];
        } else {
            $id = str_replace('pe_', '', $id);

            $p = PasswordManager::find($id);

            if (
                !has_access($user->roleid, 'password_manager', 'all_data') &&
                $p->admin_id != $user->id
            ) {
                permissionDenied();
            }

            if ($p) {
                $edit = true;
                $password = [
                    'id' => $p->id,
                    'client_id' => $p->client_id,
                    'name' => $p->name,
                    'url' => $p->url,
                    'username' => $p->username,
                    'password' => $p->password,
                    'notes' => $p->notes,
                ];
            }
        }

        $c = Contact::all();

        view('modal_password', [
            'edit' => $edit,
            'password' => $password,
            'c' => $c,
        ]);

        break;

    case 'save':
        $id = _post('password_id');

        $name = _post('name');

        if ($name == '') {
            exit($_L['name_error']);
        }

        if ($id != '') {
            $p = PasswordManager::find($id);
            if ($p) {
                $p->client_id = _post('client_id');
                $p->name = _post('name');
                $p->url = _post('url');
                $p->username = _post('username');
                $p->password = _post('password');
                $p->notes = _post('notes');
                $p->save();
                $id = $p->id;
            }
        } else {
            $p = new PasswordManager();
            $p->client_id = _post('client_id');
            $p->name = _post('name');
            $p->url = _post('url');
            $p->username = _post('username');
            $p->password = _post('password');
            $p->notes = _post('notes');
            $p->save();
            $id = $p->id;
        }

        echo $id;

        break;

    case 'modal_view_password':
        $id = route(2);
        $id = str_replace('v_', '', $id);

        $p = PasswordManager::find($id);

        if ($p) {
            if (
                !has_access($user->roleid, 'password_manager', 'all_data') &&
                $p->admin_id != $user->id
            ) {
                permissionDenied();
            }
            view('modal_view_password', [
                'p' => $p,
            ]);
        }

        break;

    default:
        echo 'action not defined';
}