diff --git a/app/Http/Controllers/ConfigController.php b/app/Http/Controllers/ConfigController.php
index 368d2c2..3d02848 100644
--- a/app/Http/Controllers/ConfigController.php
+++ b/app/Http/Controllers/ConfigController.php
@@ -8,44 +8,44 @@
class ConfigController extends Controller
{
- public function show()
- {
- // menu "Sincronizar ..."
+ public function show()
+ {
+ // menu "Sincronizar ..."
- $this->authorize('admin');
- \UspTheme::activeUrl('configs');
- $config = Config::all()->last();
- if ($config == null) {
- $config = new Config;
- $config->save();
+ $this->authorize('admin');
+ \UspTheme::activeUrl('configs');
+ $config = Config::all()->last();
+ if ($config == null) {
+ $config = new Config;
+ $config->save();
+ }
+ $codpes_sem_vinculo = $config->codpes_sem_vinculo;
+ return view('configs/edit', compact('codpes_sem_vinculo'));
}
- $codpes_sem_vinculo = $config->codpes_sem_vinculo;
- return view('configs/edit', compact('codpes_sem_vinculo'));
- }
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param \App\Config $config
- * @return \Illuminate\Http\Response
- */
- public function update(Request $request)
- {
- // menu "Sincronizar ..." -> botão "Enviar"
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \App\Config $config
+ * @return \Illuminate\Http\Response
+ */
+ public function update(Request $request)
+ {
+ // menu "Sincronizar ..." -> botão "Enviar"
- $this->authorize('admin');
- $request->validate([
- 'codpes_sem_vinculo' => [new Numeros_USP($request->codpes_sem_vinculo)],
- ]);
- $codpes_sem_vinculo = explode(',', $request->codpes_sem_vinculo);
- $codpes_sem_vinculo = array_map('trim', $codpes_sem_vinculo);
- $codpes_sem_vinculo = implode(',', $codpes_sem_vinculo);
+ $this->authorize('admin');
+ $request->validate([
+ 'codpes_sem_vinculo' => [new Numeros_USP($request->codpes_sem_vinculo)],
+ ]);
+ $codpes_sem_vinculo = explode(',', $request->codpes_sem_vinculo);
+ $codpes_sem_vinculo = array_map('trim', $codpes_sem_vinculo);
+ $codpes_sem_vinculo = implode(',', $codpes_sem_vinculo);
- $config = Config::all()->last();
- $config->codpes_sem_vinculo = $codpes_sem_vinculo;
- $request->session()->flash('alert-info', 'Números USP alterados com sucesso');
- $config->save();
- return redirect()->back();
- }
+ $config = Config::all()->last();
+ $config->codpes_sem_vinculo = $codpes_sem_vinculo;
+ $request->session()->flash('alert-info', 'Números USP alterados com sucesso');
+ $config->save();
+ return redirect()->back();
+ }
}
diff --git a/app/Http/Controllers/LdapUserController.php b/app/Http/Controllers/LdapUserController.php
index 4d6a026..4a78b08 100644
--- a/app/Http/Controllers/LdapUserController.php
+++ b/app/Http/Controllers/LdapUserController.php
@@ -18,412 +18,395 @@
class LdapUserController extends Controller
{
- public function __construct()
- {
- $this->middleware('auth');
- }
-
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index(Request $request)
- {
- // menu "Usuários Ldap"
-
- $this->authorize('manager');
- \UspTheme::activeUrl('ldapusers');
-
- //vamos validar os campos??
- $request->validate([
- 'perPage' => 'nullable',
- 'page' => 'nullable',
- 'search' => 'nullable',
- 'grupos' => 'nullable',
- ]);
-
- // Registros por página
- $perPage = empty($request->perPage) ? config('web-ldap-admin.registrosPorPagina') : $request->perPage;
-
- // Verifica qual a página
- $page = empty($request->page) ? 1 : $request->page;
-
- // Busca
- $ldapusers = User::query();
-
- if (!empty($request->search) && isset($request->search)) {
- // buscar por username ou por nome
- $ldapusers = $ldapusers->orWhere('displayname', 'contains', $request->search)
- ->orWhere('samaccountname', 'contains', $request->search);
+ public function __construct()
+ {
+ $this->middleware('auth');
}
- if (!empty($request->grupos) && isset($request->grupos)) {
- if (count($request->grupos) > 1) {
- for ($i = 0; $i < count($request->grupos); $i++) {
- $group = Group::findBy('cn', $request->grupos[$i]);
- if ($group) {
- $ldapusers = $ldapusers->orWhere('memberof', '=', $group->getDn());
- }
+ /**
+ * Display a listing of the resource.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function index(Request $request)
+ {
+ // menu "Usuários Ldap"
+
+ $this->authorize('manager');
+ \UspTheme::activeUrl('ldapusers');
+
+ //vamos validar os campos??
+ $request->validate([
+ 'perPage' => 'nullable',
+ 'page' => 'nullable',
+ 'search' => 'nullable',
+ 'grupos' => 'nullable',
+ ]);
+
+ // Registros por página
+ $perPage = empty($request->perPage) ? config('web-ldap-admin.registrosPorPagina') : $request->perPage;
+
+ // Verifica qual a página
+ $page = empty($request->page) ? 1 : $request->page;
+
+ // Busca
+ $ldapusers = User::query();
+
+ if (!empty($request->search) && isset($request->search)) {
+ // buscar por username ou por nome
+ $ldapusers = $ldapusers->orWhere('displayname', 'contains', $request->search)
+ ->orWhere('samaccountname', 'contains', $request->search);
}
- } else {
- //TODO: aqui nao acho que precise separado do FOR
- $group = Group::findBy('cn', $request->grupos[0]);
- if ($group) {
- $ldapusers = $ldapusers->where('memberof', '=', $group->getDn());
+
+ if (!empty($request->grupos) && isset($request->grupos)) {
+ if (count($request->grupos) > 1) {
+ for ($i = 0; $i < count($request->grupos); $i++) {
+ $group = Group::findBy('cn', $request->grupos[$i]);
+ if ($group) {
+ $ldapusers = $ldapusers->orWhere('memberof', '=', $group->getDn());
+ }
+ }
+ } else {
+ //TODO: aqui nao acho que precise separado do FOR
+ $group = Group::findBy('cn', $request->grupos[0]);
+ if ($group) {
+ $ldapusers = $ldapusers->where('memberof', '=', $group->getDn());
+ }
+ }
}
- }
- }
- // oculta usuários default do sistema
- foreach (config('web-ldap-admin.ocultarUsuarios') as $usuario) {
- $ldapusers = $ldapusers->where('samaccountname', '!=', $usuario);
- }
+ // oculta usuários default do sistema
+ foreach (config('web-ldap-admin.ocultarUsuarios') as $usuario) {
+ $ldapusers = $ldapusers->where('samaccountname', '!=', $usuario);
+ }
- // mostra somente os usuários habilitados
- // $ldapusers = $ldapusers->whereEnabled();
-
- // tentativa de mostrar somente contas não expiradas
- // $ldapusers = $ldapusers->whereBetween('accountexpires', [(new \DateTime('October 1st 2010'))->format('YmdHis.0\Z'), now()->format('YmdHis.0\Z')]);
-
- // Ordenando
- $ldapusers = $ldapusers->orderBy('displayname', 'asc');
-
- // Paginando
- // pagina começa no 0 mas vamos mostrar começando no 1
-
- // processamento especial para contar mais de 1000 (a nova versão do LDAP trunca em 1000)
- $allUsers = collect();
- $ldapusers->chunk(1000, function ($chunk) use ($allUsers) {
- foreach ($chunk as $user) {
- $allUsers->push($user);
- }
- });
- $allUsers = $allUsers->sortBy(function ($user) {
- $nome = $user->getFirstAttribute('displayname');
- return empty($nome) ? ' ' : $nome;
- }, SORT_NATURAL | SORT_FLAG_CASE)->values();
-
- // processamento especial para paginar manualmente
- $page = request()->get('page', 1); // Descobrimos a página atual baseada na URL (?page=X)
- $offset = ($page - 1) * $perPage; // Fatiamos a coleção para pegar apenas os itens da página atual... offset = onde começa o corte
- $itemsForCurrentPage = $allUsers->slice($offset, $perPage)->values();
- $ldapusers = new \Illuminate\Pagination\LengthAwarePaginator($itemsForCurrentPage, $allUsers->count(), $perPage, $page, ['path' => \Illuminate\Pagination\Paginator::resolveCurrentPath()]); // Criamos o Paginador Manualmente para o Blade entender
-
- $nav = [
- 'pagCor' => $ldapusers->currentPage(),
- 'perPag' => $ldapusers->perPage(),
- 'totPag' => $ldapusers->lastPage(),
- 'total' => $ldapusers->total(), // É esse valor que vai aparecer como 1022
- 'offset' => $ldapusers->firstItem() - 1,
- ];
-
- $maxLnk = 5; # Máximo de links
- $lnkLat = ceil($maxLnk / 2); # Cálculo dos links laterais
- $nav['pagIni'] = $nav['pagCor'] - $lnkLat; # Início dos links (esquerda)
- $nav['pagFin'] = $nav['pagCor'] + $lnkLat; # Fim dos links (direita)
-
- $searchGrupos = '';
- $gruposUrl = '';
- if (!empty($request->grupos) && isset($request->grupos)) {
- $searchGrupos = implode(', ', $request->grupos);
- foreach ($request->grupos as $grupo) {
- $gruposUrl .= "&grupos[]=$grupo";
- }
- }
+ // mostra somente os usuários habilitados
+ // $ldapusers = $ldapusers->whereEnabled();
+
+ // tentativa de mostrar somente contas não expiradas
+ // $ldapusers = $ldapusers->whereBetween('accountexpires', [(new \DateTime('October 1st 2010'))->format('YmdHis.0\Z'), now()->format('YmdHis.0\Z')]);
+
+ // Ordenando
+ $ldapusers = $ldapusers->orderBy('displayname', 'asc');
+
+ // Paginando
+ // pagina começa no 0 mas vamos mostrar começando no 1
+
+ // processamento especial para contar mais de 1000 (a nova versão do LDAP trunca em 1000)
+ $allUsers = collect();
+ $ldapusers->chunk(1000, function ($chunk) use ($allUsers) {
+ foreach ($chunk as $user) {
+ $allUsers->push($user);
+ }
+ });
+ $allUsers = $allUsers->sortBy(function ($user) {
+ $nome = $user->getFirstAttribute('displayname');
+ return empty($nome) ? ' ' : $nome;
+ }, SORT_NATURAL | SORT_FLAG_CASE)->values();
+
+ // processamento especial para paginar manualmente
+ $page = request()->get('page', 1); // Descobrimos a página atual baseada na URL (?page=X)
+ $offset = ($page - 1) * $perPage; // Fatiamos a coleção para pegar apenas os itens da página atual... offset = onde começa o corte
+ $itemsForCurrentPage = $allUsers->slice($offset, $perPage)->values();
+ $ldapusers = new \Illuminate\Pagination\LengthAwarePaginator($itemsForCurrentPage, $allUsers->count(), $perPage, $page, ['path' => \Illuminate\Pagination\Paginator::resolveCurrentPath()]); // Criamos o Paginador Manualmente para o Blade entender
+
+ $nav = [
+ 'pagCor' => $ldapusers->currentPage(),
+ 'perPag' => $ldapusers->perPage(),
+ 'totPag' => $ldapusers->lastPage(),
+ 'total' => $ldapusers->total(), // É esse valor que vai aparecer como 1022
+ 'offset' => $ldapusers->firstItem() - 1,
+ ];
+
+ $maxLnk = 5; # Máximo de links
+ $lnkLat = ceil($maxLnk / 2); # Cálculo dos links laterais
+ $nav['pagIni'] = $nav['pagCor'] - $lnkLat; # Início dos links (esquerda)
+ $nav['pagFin'] = $nav['pagCor'] + $lnkLat; # Fim dos links (direita)
+
+ $searchGrupos = '';
+ $gruposUrl = '';
+ if (!empty($request->grupos) && isset($request->grupos)) {
+ $searchGrupos = implode(', ', $request->grupos);
+ foreach ($request->grupos as $grupo) {
+ $gruposUrl .= "&grupos[]=$grupo";
+ }
+ }
- $grupos = LdapGroup::listaGrupos();
-
- return view('ldapusers.index', compact('ldapusers', 'grupos', 'request', 'nav', 'gruposUrl', 'searchGrupos', 'perPage'));
- }
-
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function create(Request $request)
- {
- // menu "Criar usuário"
-
- $this->authorize('manager');
- \UspTheme::activeUrl('ldapusers/create');
-
- return view('ldapusers.create');
- }
-
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(Request $request)
- {
- // menu "Criar usuário" -> botão "Enviar Dados"
-
- $this->authorize('manager');
-
- if (isset($request->acao) && $request->acao == 'criar-por-codpes') {
- $request->validate([
- 'codpes' => 'required|integer',
- ]);
-
- // verifincado se usuário já existe no ldap
- if ($user = LdapUser::obterUserPorCodpes($request->codpes)) {
- $request->session()->flash('alert-info', 'Usuário já existe!');
- return redirect("ldapusers/" . $user->getFirstAttribute('samaccountname'));
- }
-
- // verificando se o codpes possui vinculo ativo na unidade
- $pessoa = Pessoa::listarVinculosAtivos($request->codpes);
- if (!$pessoa) {
- $request->session()->flash('alert-warning', 'Número USP ' . $request->codpes . ' não encontrado!');
- return back();
- }
- // dd($pessoa);
-
- // criando usuario a partir do codpes
- $user = LdapUser::criarOuAtualizarPorArray($pessoa[0]);
- $user->unicodepwd = ($password = $password ?? Utils::senhaAleatoria());
- $user->save();
-
- $request->session()->flash('alert-success', 'Usuário cadastrado com sucesso!');
- return redirect("ldapusers/" . $user->getFirstAttribute('samaccountname'))->with('password', $password);
+ $grupos = LdapGroup::listaGrupos();
+
+ return view('ldapusers.index', compact('ldapusers', 'grupos', 'request', 'nav', 'gruposUrl', 'searchGrupos', 'perPage'));
}
- // criando usuário com dados manuais
- $request->validate([
- 'username' => ['required', 'regex:/^[a-zA-Z0-9]*$/i', new LdapUsernameRule],
- 'nome' => ['required'],
- 'email' => ['required', 'email', new LdapEmailRule],
- ]);
-
- $grupos = array_merge($request->grupos, ['NAOREPLICADO']);
- $attr = [
- 'nome' => $request->nome,
- 'email' => $request->email,
- 'setor' => 'NAOREPLICADO',
- ];
- $user = LdapUser::createOrUpdate($request->username, $attr, $grupos);
-
- $request->session()->flash('alert-success', 'Usuário cadastrado com sucesso!');
- return redirect("ldapusers/" . $user->getFirstAttribute('samaccountname'));
- }
-
- /**
- * Display the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function show(Request $request, $username)
- {
- // menu "Usuários Ldap" -> algum usuário Ldap
-
- $this->authorize('manager');
- \UspTheme::activeUrl('ldapusers');
-
- $user = LdapUser::obterUserPorUsername($username);
- if (!$user) {
- $request->session()->flash('alert-danger', "A conta $username não existe no ldap.");
- return view('ldapusers.show-no-user');
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function create(Request $request)
+ {
+ // menu "Criar usuário"
+
+ $this->authorize('manager');
+ \UspTheme::activeUrl('ldapusers/create');
+
+ return view('ldapusers.create');
}
- return SELF::showCommon($user);
- }
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return \Illuminate\Http\Response
+ */
+ public function store(Request $request)
+ {
+ // menu "Criar usuário" -> botão "Enviar Dados"
+
+ $this->authorize('manager');
+
+ if (isset($request->acao) && $request->acao == 'criar-por-codpes') {
+ $request->validate([
+ 'codpes' => 'required|integer',
+ ]);
+
+ // verifincado se usuário já existe no ldap
+ if ($user = LdapUser::obterUserPorCodpes($request->codpes)) {
+ $request->session()->flash('alert-info', 'Usuário já existe!');
+ return redirect("ldapusers/" . $user->getFirstAttribute('samaccountname'));
+ }
+
+ // verificando se o codpes possui vinculo ativo na unidade
+ $pessoa = Pessoa::listarVinculosAtivos($request->codpes);
+ if (!$pessoa) {
+ $request->session()->flash('alert-warning', 'Número USP ' . $request->codpes . ' não encontrado!');
+ return back();
+ }
+ // dd($pessoa);
+
+ // criando usuario a partir do codpes
+ $user = LdapUser::criarOuAtualizarPorArray($pessoa[0]);
+ $user->unicodepwd = ($password = $password ?? Utils::senhaAleatoria());
+ $user->save();
+
+ $request->session()->flash('alert-success', 'Usuário cadastrado com sucesso!');
+ return redirect("ldapusers/" . $user->getFirstAttribute('samaccountname'))->with('password', $password);
+ }
- public function my(Request $request)
- {
- // menu "Minha Conta (trocar senha da rede)"
+ // criando usuário com dados manuais
+ $request->validate([
+ 'username' => ['required', 'regex:/^[a-zA-Z0-9]*$/i', new LdapUsernameRule],
+ 'nome' => ['required'],
+ 'email' => ['required', 'email', new LdapEmailRule],
+ ]);
- $this->authorize('user');
- \UspTheme::activeUrl('ldapusers/my');
+ $grupos = array_merge($request->grupos, ['NAOREPLICADO']);
+ $attr = [
+ 'nome' => $request->nome,
+ 'email' => $request->email,
+ 'setor' => 'NAOREPLICADO',
+ ];
+ $user = LdapUser::createOrUpdate($request->username, $attr, $grupos);
- $user = LdapUser::obterUserPorCodpes(Auth::user()->codpes);
- if (!$user) {
- $request->session()->flash('alert-danger', 'Sua conta não existe no ldap. ');
- return view('ldapusers.show-no-user');
+ $request->session()->flash('alert-success', 'Usuário cadastrado com sucesso!');
+ return redirect("ldapusers/" . $user->getFirstAttribute('samaccountname'));
}
- return SELF::showCommon($user);
- }
-
- /**
- * parte comum do para show e my
- */
- protected function showCommon($user)
- {
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)"
-
- $attr = LdapUser::show($user);
- $vinculos = [];
- // o $codpesValido serve para informar se o codpes extraído veio do campo indicado no config
- list($codpes, $codpesValido) = LdapUser::obterCodpes($user, true);
-
- if ($codpes) {
- $vinculos = Replicado::listarVinculosEstendidos($codpes);
- $foto = \Uspdev\Wsfoto::obter($codpes);
- } else {
- $foto = '';
+
+ /**
+ * Display the specified resource.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function show(Request $request, $username)
+ {
+ // menu "Usuários Ldap" -> algum usuário Ldap
+
+ $this->authorize('manager');
+ \UspTheme::activeUrl('ldapusers');
+
+ $user = LdapUser::obterUserPorUsername($username);
+ if (!$user) {
+ $request->session()->flash('alert-danger', "A conta $username não existe no ldap.");
+ return view('ldapusers.show-no-user');
+ }
+
+ return SELF::showCommon($user);
}
- return view('ldapusers.show', compact('attr', 'user', 'vinculos', 'codpesValido', 'foto'));
- }
-
- /**
- * Show the form for editing the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function edit($id) {}
-
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function update(Request $request, $username)
- {
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar"
- $this->authorize('user');
-
- // troca de senha
- if (!is_null($request->senha)) {
- $request->validate([
- // TODO: 04/07/2022 - ECAdev @alecosta: Parametrizar
- // 'senha' => ['required', 'confirmed', 'min:8'], # Sem complexidade
- 'senha' => ['required', 'confirmed', 'min:8', 'max:20', 'regex:/[0-9]/', 'regex:/[A-Z]/', 'regex:/[!@#\$%\^&\*()_]/'], # Com complexidade
- 'must_change_pwd' => ['nullable', 'in:1'],
- ]);
+ public function my(Request $request)
+ {
+ // menu "Minha Conta (trocar senha da rede)"
- if (LdapUser::changePassword($username, $request->senha, $request->must_change_pwd)) {
- $request->session()->flash('alert-success', 'Senha alterada com sucesso!');
+ $this->authorize('user');
+ \UspTheme::activeUrl('ldapusers/my');
+
+ $user = LdapUser::obterUserPorCodpes(Auth::user()->codpes);
+ if (!$user) {
+ $request->session()->flash('alert-danger', 'Sua conta não existe no ldap. ');
+ return view('ldapusers.show-no-user');
+ }
+ return SELF::showCommon($user);
+ }
+
+ /**
+ * parte comum do para show e my
+ */
+ protected function showCommon($user)
+ {
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)"
+
+ $attr = LdapUser::show($user);
+ $vinculos = [];
+ // o $codpesValido serve para informar se o codpes extraído veio do campo indicado no config
+ list($codpes, $codpesValido) = LdapUser::obterCodpes($user, true);
+
+ if ($codpes) {
+ $vinculos = Replicado::listarVinculosEstendidos($codpes);
+ $foto = \Uspdev\Wsfoto::obter($codpes);
} else {
- $request->session()->flash('alert-danger',
- 'Não foi possível alterar a senha da sua conta! Consulte a política de senha de seu servidor.');
+ $foto = '';
}
- return redirect()->back();
+ return view('ldapusers.show', compact('attr', 'user', 'vinculos', 'codpesValido', 'foto'));
}
- $this->authorize('manager');
- // atualiza status
- if (!is_null($request->status)) {
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function edit($id) {}
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function update(Request $request, $username)
+ {
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar"
+
+ $this->authorize('user');
+
+ // troca de senha
+ if (!is_null($request->senha)) {
+ $request->validate([
+ // TODO: 04/07/2022 - ECAdev @alecosta: Parametrizar
+ // 'senha' => ['required', 'confirmed', 'min:8'], # Sem complexidade
+ 'senha' => ['required', 'confirmed', 'min:8', 'max:20', 'regex:/[0-9]/', 'regex:/[A-Z]/', 'regex:/[!@#\$%\^&\*()_]/'], # Com complexidade
+ 'must_change_pwd' => ['nullable', 'in:1'],
+ ]);
+
+ if (LdapUser::changePassword($username, $request->senha, $request->must_change_pwd)) {
+ $request->session()->flash('alert-success', 'Senha alterada com sucesso!');
+ } else {
+ $request->session()->flash(
+ 'alert-danger',
+ 'Não foi possível alterar a senha da sua conta! Consulte a política de senha de seu servidor.'
+ );
+ }
- if ($request->status == 'disable') {
- LdapUser::disable($username);
- $request->session()->flash('alert-success', "Usuário $username desabilitado!");
return redirect()->back();
}
- if ($request->status == 'enable') {
- LdapUser::enable($username);
- $request->session()->flash('alert-success', "Usuário $username habilitado!");
- return redirect()->back();
+ $this->authorize('manager');
+ // atualiza status
+ if (!is_null($request->status)) {
+
+ if ($request->status == 'disable') {
+ LdapUser::disable($username);
+ $request->session()->flash('alert-success', "Usuário $username desabilitado!");
+ return redirect()->back();
+ }
+
+ if ($request->status == 'enable') {
+ LdapUser::enable($username);
+ $request->session()->flash('alert-success', "Usuário $username habilitado!");
+ return redirect()->back();
+ }
}
- }
- // atualiza data de expiração
- if (!is_null($request->expiry)) {
- $request->validate([
- 'expiry' => ['required', Rule::in([7, 30, 365, 0, -1])],
- ]);
+ // atualiza data de expiração
+ if (!is_null($request->expiry)) {
+ $request->validate([
+ 'expiry' => ['required', Rule::in([7, 30, 365, 0, -1])],
+ ]);
- LdapUser::expirarSenha($username, $request->expiry);
- $request->session()->flash('alert-success', "Usuário $username: alterado expiração da senha!");
- return redirect()->back();
+ LdapUser::expirarSenha($username, $request->expiry);
+ $request->session()->flash('alert-success', "Usuário $username: alterado expiração da senha!");
+ return redirect()->back();
+ }
}
- // evita que caia em tela vazia caso nada tenha sido alterado pelo usuário
- $request->session()->flash('alert-success', "Nenhuma operação realizada.");
- return redirect()->back();
-}
-
- /**
- * Remove the specified resource from storage.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function destroy(Request $request, $username)
- {
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Excluir"
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function destroy(Request $request, $username)
+ {
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Excluir"
- $this->authorize('manager');
+ $this->authorize('manager');
- $attr = LdapUser::delete($username);
+ $attr = LdapUser::delete($username);
- $request->session()->flash('alert-danger', 'Usuário(a) ' . $username . ' deletado');
- return redirect()->back();
- }
+ $request->session()->flash('alert-danger', 'Usuário(a) ' . $username . ' deletado');
+ return redirect()->back();
+ }
- public function syncReplicadoForm(Request $request)
- {
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado"
+ public function syncReplicadoForm(Request $request)
+ {
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado"
- $this->authorize('manager');
- \UspTheme::activeUrl('configs');
+ $this->authorize('manager');
+ \UspTheme::activeUrl('configs');
- $vinculos = Pessoa::tiposVinculos(config('web-ldap-admin.replicado_unidade'));
- foreach ($vinculos as &$vinculo) {
- $vinculo['countReplicado'] = Pessoa::ativosVinculo($vinculo['tipvinext'], config('web-ldap-admin.replicado_unidade'), 1)[0]['total'];
- $vinculo['countAD'] = count(LdapUser::getUsersGroup($vinculo['tipvinext']));
- $vinculo['style'] = ($vinculo['countAD'] < $vinculo['countReplicado']) ? 'text-danger' : '';
- }
+ $vinculos = Pessoa::listarTiposVinculoExtenso();
+ foreach ($vinculos as &$vinculo) {
+ $vinculo['countReplicado'] = Pessoa::ativosVinculo($vinculo['tipvinext'], config('web-ldap-admin.replicado_unidade'), 1)[0]['total'];
+ $vinculo['countAD'] = count(LdapUser::getUsersGroup($vinculo['tipvinext']));
+ $vinculo['style'] = ($vinculo['countAD'] < $vinculo['countReplicado']) ? 'text-danger' : '';
+ }
- return view('ldapusers.sync', compact('vinculos'));
- }
-
- public function syncReplicado(Request $request)
- {
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar"
-
- $this->authorize('manager');
- $this->validate($request, [
- 'type' => 'required',
- ]);
-
- SincronizaReplicado::dispatch($request->type);
- $request->session()->flash('alert-success', 'Sincronização em andamento');
- return redirect('/ldapusers');
- }
-
- public function addGroup(Request $request)
- {
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Grupo" -> botão "Salvar"
-
- $this->authorize('manager');
- // Validações
- $request->validate([
- 'username' => ['required'],
- 'grupos' => ['required'],
- ]);
- $grupos = $request->grupos;
- $user = LdapUser::obterUserPorUsername($request->username);
- foreach ($grupos as $grupo) {
- $group = LdapGroup::createOrUpdate($grupo);
- $group->members()->attach($user);
+ return view('ldapusers.sync', compact('vinculos'));
}
- $request->session()->flash('alert-success', 'Grupo(s) adicionado(s) com sucesso.');
- return redirect("/ldapusers/$request->username");
- }
- public function deleteUserGroup(Request $request, $username, $group)
- {
- $this->authorize('manager');
+ public function syncReplicado(Request $request)
+ {
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar"
- $user = LdapUser::obterUserPorUsername($username);
- $group = Group::where('cn', '=', $group)->first();
+ $this->authorize('manager');
+ $this->validate($request, [
+ 'type' => 'required',
+ ]);
- if ( $user->groups()->exists($group) ) {
- $user->groups()->detach($group);
- $request->session()->flash('alert-success', 'Grupo ' . $group['name'][0] . ' removido com sucesso.');
+ SincronizaReplicado::dispatch($request->type);
+ $request->session()->flash('alert-success', 'Sincronização em andamento');
+ return redirect('/ldapusers');
}
- return redirect()->back();
- }
+ public function addGroup(Request $request)
+ {
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Grupo" -> botão "Salvar"
+ $this->authorize('manager');
+ // Validações
+ $request->validate([
+ 'username' => ['required'],
+ 'grupos' => ['required'],
+ ]);
+ $grupos = $request->grupos;
+ $user = LdapUser::obterUserPorUsername($request->username);
+ foreach ($grupos as $grupo) {
+ $group = LdapGroup::createOrUpdate($grupo);
+ $group->members()->attach($user);
+ }
+ $request->session()->flash('alert-success', 'Grupo(s) adicionado(s) com sucesso.');
+ return redirect("/ldapusers/$request->username");
+ }
}
diff --git a/app/Jobs/SincronizaReplicado.php b/app/Jobs/SincronizaReplicado.php
index 1c1d343..a1c0b42 100644
--- a/app/Jobs/SincronizaReplicado.php
+++ b/app/Jobs/SincronizaReplicado.php
@@ -37,9 +37,9 @@ public function __construct(array $type)
public function handle()
{
// menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar"
-
+
foreach ($this->type as $type) {
- foreach (Pessoa::tiposVinculos($this->unidade) as $vinculo) {
+ foreach (Pessoa::listarTiposVinculoExtenso() as $vinculo) {
if ($type == $vinculo['tipvinext']) {
$this->sync(Pessoa::ativosVinculo($vinculo['tipvinext'], $this->unidade));
}
@@ -50,7 +50,7 @@ public function handle()
public function sync($pessoas)
{
// menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar"
-
+
if ($pessoas) {
// No .env foi configurado para desativar os desligados?
if (config('web-ldap-admin.desativarDesligados') == true) {
diff --git a/app/Ldap/User.php b/app/Ldap/User.php
index db3d329..c423ebf 100644
--- a/app/Ldap/User.php
+++ b/app/Ldap/User.php
@@ -8,6 +8,7 @@
use Uspdev\Replicado\Graduacao;
use Uspdev\Replicado\Estrutura;
use Uspdev\Replicado\Pessoa;
+use App\Replicado\Pessoa as LdapPessoa;
use Uspdev\Utils\Generic as Utils;
use LdapRecord\Models\ActiveDirectory\Container;
@@ -19,570 +20,570 @@
class User
{
- /**
- * Cria ou atualiza os dados do usuário ldap
- *
- * Este método está com mais comentários no código pois em geral
- * serve de entrada para novos desenvolvedores.
- *
- * Estrutura do array attr:
- * $attr['nome'] : Nome completo
- * $attr['email'] : Email
- * $attr['setor'] : Departamento
- * $attr['descricao'] : Descricao
- **/
- public static function createOrUpdate(string $username, array $attr, array $groups = [], $password = null)
- {
- // invocado por:
- // no login (LoginListener::handle -> User::criarOuAtualizarPorArray)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::criarOuAtualizarPorArray)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::criarOuAtualizarPorArray)
-
- // vamos ver se o usuário já existe
- $user = SELF::obterUserPorUsername($username);
-
- # Novo usuário
- if (is_null($user) or $user == false) {
- $user = new LdapUser();
-
- // define DN para esse user
- $baseDn = $user->getConnection()->getConfiguration()->get('base_dn');
- $user->setDn("CN={$username},CN=Users,{$baseDn}");
-
- // se não for fornecido senha vamos gerar aleatório forte
- $user->unicodepwd = $password ?? Utils::senhaAleatoria();
-
- // Trocar a senha no próximo logon
- if (config('web-ldap-admin.obrigaTrocarSenhaNoWindows')) {
- $user->pwdlastset = 0;
- }
-
- // Enable the new user (using user account control).
- $user->useraccountcontrol = AccountControl::NORMAL_ACCOUNT;
-
- // vamos expirar senha conforme config
- $user->accountExpires = SELF::getExpiryDays();
- }
+ /**
+ * Cria ou atualiza os dados do usuário ldap
+ *
+ * Este método está com mais comentários no código pois em geral
+ * serve de entrada para novos desenvolvedores.
+ *
+ * Estrutura do array attr:
+ * $attr['nome'] : Nome completo
+ * $attr['email'] : Email
+ * $attr['setor'] : Departamento
+ * $attr['descricao'] : Descricao
+ **/
+ public static function createOrUpdate(string $username, array $attr, array $groups = [], $password = null)
+ {
+ // invocado por:
+ // no login (LoginListener::handle -> User::criarOuAtualizarPorArray)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::criarOuAtualizarPorArray)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::criarOuAtualizarPorArray)
+
+ // vamos ver se o usuário já existe
+ $user = SELF::obterUserPorUsername($username);
+
+ # Novo usuário
+ if (is_null($user) or $user == false) {
+ $user = new LdapUser();
+
+ // define DN para esse user
+ $baseDn = $user->getConnection()->getConfiguration()->get('base_dn');
+ $user->setDn("CN={$username},CN=Users,{$baseDn}");
+
+ // se não for fornecido senha vamos gerar aleatório forte
+ $user->unicodepwd = $password ?? Utils::senhaAleatoria();
+
+ // Trocar a senha no próximo logon
+ if (config('web-ldap-admin.obrigaTrocarSenhaNoWindows')) {
+ $user->pwdlastset = 0;
+ }
- // login no windows
- $user->samaccountname = $username;
- // nome de exibição
- $user->displayname = $attr['nome'];
-
- // atribuindo nome e sobrenome
- $nome_array = explode(' ', $attr['nome']);
- if (count($nome_array) > 1) {
- $user->givenname = trim($nome_array[0]);
- unset($nome_array[0]);
- $user->sn = implode(' ', $nome_array);
- } else {
- $user->givenname = trim($nome_array[0]);
- }
+ // Enable the new user (using user account control).
+ $user->useraccountcontrol = AccountControl::NORMAL_ACCOUNT;
- if (!empty($attr['email'])) {
- $user->mail = $attr['email'];
- }
+ // vamos expirar senha conforme config
+ $user->accountExpires = SELF::getExpiryDays();
+ }
- // caso o codpes venha no employeenumber
- if (!empty($attr['employeeNumber'])) {
- $user->employeeNumber = $attr['employeeNumber'];
- }
+ // login no windows
+ $user->samaccountname = $username;
+ // nome de exibição
+ $user->displayname = $attr['nome'];
+
+ // atribuindo nome e sobrenome
+ $nome_array = explode(' ', $attr['nome']);
+ if (count($nome_array) > 1) {
+ $user->givenname = trim($nome_array[0]);
+ unset($nome_array[0]);
+ $user->sn = implode(' ', $nome_array);
+ } else {
+ $user->givenname = trim($nome_array[0]);
+ }
- // Departamento
- if (!empty($attr['setor'])) {
- $user->department = $attr['setor'];
- }
+ if (!empty($attr['email'])) {
+ $user->mail = $attr['email'];
+ }
- // Descrição, informa se a conta foi criada a partir da sincronização
- if (!empty($attr['descricao'])) {
- $user->description = $attr['descricao'];
- }
+ // caso o codpes venha no employeenumber
+ if (!empty($attr['employeeNumber'])) {
+ $user->employeeNumber = $attr['employeeNumber'];
+ }
- // Atributos para Linux
- $username_integer = (int) $username;
- if (config('web-ldap-admin.usarAtributosLinux') && $username_integer != 0) {
+ // Departamento
+ if (!empty($attr['setor'])) {
+ $user->department = $attr['setor'];
+ }
- $user->uid = config('web-ldap-admin.prefixo_linux') . $username;
- $user->uidNumber = $username;
- $user->gidNumber = config('web-ldap-admin.gid_linux');
- $user->loginShell = '/bin/bash';
- $user->userPrincipalName = $username . '@' . config('web-ldap-admin.ldap_domain');
- $user->unixHomeDirectory = '/home/' . config('web-ldap-admin.prefixo_linux') . $username;
- }
+ // Descrição, informa se a conta foi criada a partir da sincronização
+ if (!empty($attr['descricao'])) {
+ $user->description = $attr['descricao'];
+ }
- $user->save();
+ // Atributos para Linux
+ $username_integer = (int) $username;
+ if (config('web-ldap-admin.usarAtributosLinux') && $username_integer != 0) {
- $user->department = $attr['setor'];
+ $user->uid = config('web-ldap-admin.prefixo_linux') . $username;
+ $user->uidNumber = $username;
+ $user->gidNumber = config('web-ldap-admin.gid_linux');
+ $user->loginShell = '/bin/bash';
+ $user->userPrincipalName = $username . '@' . config('web-ldap-admin.ldap_domain');
+ $user->unixHomeDirectory = '/home/' . config('web-ldap-admin.prefixo_linux') . $username;
+ }
- // Adiciona a um ou mais grupo
- LdapGroup::addMember($user, $groups);
+ $user->save();
- // Busca a OU padrão informada no .env
- // Se vazio, não é necessário alterar nada, pois o default é a raiz (Thiago)
- if (config('web-ldap-admin.ouDefault') != '') {
- $ou = OrganizationalUnit::findBy('ou', config('web-ldap-admin.ouDefault'));
+ $user->department = $attr['setor'];
- // Move o usuário para a OU padrão somente se ela existir,
- // do contrário deixa o usuário na raiz
- $user->move($ou);
- }
+ // Adiciona a um ou mais grupo
+ LdapGroup::addMember($user, $groups);
+ // Busca a OU padrão informada no .env
+ // Se vazio, não é necessário alterar nada, pois o default é a raiz (Thiago)
+ if (config('web-ldap-admin.ouDefault') != '') {
+ $ou = OrganizationalUnit::findBy('ou', config('web-ldap-admin.ouDefault'));
+ // Move o usuário para a OU padrão somente se ela existir,
+ // do contrário deixa o usuário na raiz
+ $user->move($ou);
+ }
- return $user;
- }
- /**
- * Retorna o número de dias para expirar a conta com base no config
- */
- public static function getExpiryDays()
- {
- // invocado por:
- // no login (LoginListener::handle -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::createOrUpdate)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
- if (config('web-ldap-admin.expirarEm') == 0) {
- return null;
- } else {
- return now()->addDays((int) config('web-ldap-admin.expirarEm'));
- }
- }
-
- /**
- * Define prazo de expiração para senha da conta
- */
- public static function expirarSenha($username, $expiry)
- {
- // invocado por:
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
-
- $user = SELF::obterUserPorUsername($username);
- if ($user) {
- if ($expiry) {
- $user->accountExpires = now()->addDays((int) $expiry);
- } else {
- $user->accountExpires = 0;
- }
- $user->save();
- return true;
+ return $user;
}
- return false;
- }
-
- /**
- * Obtém uma instância de usuário com busca pelo codpes
- *
- * @param Int $codpes
- * @return LdapRecord\Models\ActiveDirectory\User
- */
- public static function obterUserPorCodpes($codpes)
- {
- // invocado por:
- // menu "Minha Conta (trocar senha da rede)" (LdapUserController::my)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store)
-
- $user = LdapUser::findBy(config('web-ldap-admin.campoCodpes'), $codpes);
-
- // não vai encontrar se for pelo username, nesse caso vamos usar o CN
- if (is_null($user)) {
- $user = LdapUser::where('cn', '=', $codpes)->first();
+
+ /**
+ * Retorna o número de dias para expirar a conta com base no config
+ */
+ public static function getExpiryDays()
+ {
+ // invocado por:
+ // no login (LoginListener::handle -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::createOrUpdate)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
+
+ if (config('web-ldap-admin.expirarEm') == 0) {
+ return null;
+ } else {
+ return now()->addDays((int) config('web-ldap-admin.expirarEm'));
+ }
}
- return $user;
- }
-
- /**
- * Obtém uma instância de usuário com busca pelo username
- *
- * @param String $username
- * @return LdapRecord\Models\ActiveDirectory\User
- */
- public static function obterUserPorUsername($username)
- {
- // invocado por:
- // no login (LoginListener::handle -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
- // menu "Solicitação de Conta de Administrador" -> botão "Enviar" (SolicitaController::store)
- // menu "Usuários Ldap" -> algum usuário Ldap (LdapUserController::show)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Grupo" -> botão "Salvar" (LdapUserController::addGroup)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::expirarSenha)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::enable)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::disable)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::changePassword)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Excluir" (LdapUserController::destroy -> User::delete)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::createOrUpdate)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::desativarUsers)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::desativarUsers -> User::disable)
-
- return LdapUser::where('cn', '=', $username)->first();
- }
-
- /**
- * Coleta atributos do usuário para serem mostrados
- *
- * @param LdapRecord\Models\ActiveDirectory\User $user
- * @return Array
- */
- public static function show(LdapUser $user)
- {
- // invocado por:
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" (LdapUserController::show, my)
-
- $attr = [];
-
- // Nome e email
- $attr['username'] = $user->getFirstAttribute('samaccountname');
- $attr['display_name'] = $user->getFirstAttribute('displayname');
- $attr['email'] = $user->getFirstAttribute('mail');
- $attr['description'] = $user->getFirstAttribute('description');
- $attr['codpes'] = SELF::obterCodpes($user);
-
- // Data da criação da conta
- $ativacao = ldapToCarbon($user, 'whencreated');
- if (!is_null($ativacao)) {
- // vamos subtrair 3 horas para bater com o TZ local. TODO: alguma forma de melhorar isso?
- $ativacao = $ativacao->subHours(3)->format('d/m/Y H:i:s');
+ /**
+ * Define prazo de expiração para senha da conta
+ */
+ public static function expirarSenha($username, $expiry)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
+
+ $user = SELF::obterUserPorUsername($username);
+ if ($user) {
+ if ($expiry) {
+ $user->accountExpires = now()->addDays((int) $expiry);
+ } else {
+ $user->accountExpires = 0;
+ }
+ $user->save();
+ return true;
+ }
+ return false;
}
- $attr['ativacao'] = $ativacao;
- // data da última senha alterada
- $last = ldapToCarbon($user, 'pwdlastset');
- if (!is_null($last)) {
- $last = $last->format('d/m/Y H:i:s');
+ /**
+ * Obtém uma instância de usuário com busca pelo codpes
+ *
+ * @param Int $codpes
+ * @return LdapRecord\Models\ActiveDirectory\User
+ */
+ public static function obterUserPorCodpes($codpes)
+ {
+ // invocado por:
+ // menu "Minha Conta (trocar senha da rede)" (LdapUserController::my)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store)
+
+ $user = LdapUser::findBy(config('web-ldap-admin.campoCodpes'), $codpes);
+
+ // não vai encontrar se for pelo username, nesse caso vamos usar o CN
+ if (is_null($user)) {
+ $user = LdapUser::where('cn', '=', $codpes)->first();
+ }
+
+ return $user;
}
- $attr['senha_alterada_em'] = $last;
- // Data da expiração da conta
- $expira = ldapToCarbon($user, 'accountexpires');
- if (!is_null($expira)) {
- $expira = $expira->format('d/m/Y');
+ /**
+ * Obtém uma instância de usuário com busca pelo username
+ *
+ * @param String $username
+ * @return LdapRecord\Models\ActiveDirectory\User
+ */
+ public static function obterUserPorUsername($username)
+ {
+ // invocado por:
+ // no login (LoginListener::handle -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
+ // menu "Solicitação de Conta de Administrador" -> botão "Enviar" (SolicitaController::store)
+ // menu "Usuários Ldap" -> algum usuário Ldap (LdapUserController::show)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Grupo" -> botão "Salvar" (LdapUserController::addGroup)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::expirarSenha)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::enable)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::disable)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update -> User::changePassword)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Excluir" (LdapUserController::destroy -> User::delete)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::createOrUpdate)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::criarOuAtualizarPorArray -> User::createOrUpdate)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::desativarUsers)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::desativarUsers -> User::disable)
+
+ return LdapUser::where('cn', '=', $username)->first();
}
- $attr['expira'] = $expira;
-
- // Grupos: vamos ocultar o grupo "Domain Users"
- $grupos = array_diff($user->groups()->get()->pluck('cn')->flatten()->toArray(), ['Domain Users']);
- sort($grupos);
- $attr['grupos'] = $grupos;
-
- // Department
- $attr['department'] = $user->getFirstAttribute('department');
-
- return $attr;
- }
-
- /**
- * Retorna o codpes do usuário ldap
- *
- * O codpes pode ser o username ou o employeeNumber e é setado no config.
- * Se não encontrar no campo apropriado faz a busca no outro campo
- * para o caso de ter mudado a regra ao longo do uso
- *
- * Se não retornar codpes o status pode ser qualquer
- *
- * @param LdapRecord\Models\ActiveDirectory\User $user
- * @param $status Se true retorna se o codpes veio do campo correto ou não, segundo o config
- * @return Int|Array|Null
- */
- public static function obterCodpes(LdapUser $user, Bool $status = false)
- {
- // invocado por:
- // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.index)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" (LdapUserController::show, my)
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" (LdapUserController::show, my -> User::show)
-
- $valido = true;
- switch (strtolower(config('web-ldap-admin.campoCodpes'))) {
- case 'employeenumber':
- if (!is_numeric($codpes = $user->getFirstAttribute('employeenumber'))) {
- $codpes = $user->getFirstAttribute('samaccountname');
- $valido = false;
+
+ /**
+ * Coleta atributos do usuário para serem mostrados
+ *
+ * @param LdapRecord\Models\ActiveDirectory\User $user
+ * @return Array
+ */
+ public static function show(LdapUser $user)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" (LdapUserController::show, my)
+
+ $attr = [];
+
+ // Nome e email
+ $attr['username'] = $user->getFirstAttribute('samaccountname');
+ $attr['display_name'] = $user->getFirstAttribute('displayname');
+ $attr['email'] = $user->getFirstAttribute('mail');
+ $attr['description'] = $user->getFirstAttribute('description');
+ $attr['codpes'] = SELF::obterCodpes($user);
+
+ // Data da criação da conta
+ $ativacao = ldapToCarbon($user, 'whencreated');
+ if (!is_null($ativacao)) {
+ // vamos subtrair 3 horas para bater com o TZ local. TODO: alguma forma de melhorar isso?
+ $ativacao = $ativacao->subHours(3)->format('d/m/Y H:i:s');
+ }
+ $attr['ativacao'] = $ativacao;
+
+ // data da última senha alterada
+ $last = ldapToCarbon($user, 'pwdlastset');
+ if (!is_null($last)) {
+ $last = $last->format('d/m/Y H:i:s');
}
- break;
- case 'username':
- default:
- if (!is_numeric($codpes = $user->getFirstAttribute('samaccountname'))) {
- $codpes = $user->getFirstAttribute('employeenumber');
- $valido = false;
+ $attr['senha_alterada_em'] = $last;
+
+ // Data da expiração da conta
+ $expira = ldapToCarbon($user, 'accountexpires');
+ if (!is_null($expira)) {
+ $expira = $expira->format('d/m/Y');
}
- break;
+ $attr['expira'] = $expira;
+
+ // Grupos: vamos ocultar o grupo "Domain Users"
+ $grupos = array_diff($user->groups()->get()->pluck('cn')->flatten()->toArray(), ['Domain Users']);
+ sort($grupos);
+ $attr['grupos'] = implode(', ', $grupos);
+
+ // Department
+ $attr['department'] = $user->getFirstAttribute('department');
+
+ return $attr;
}
- if (is_numeric($codpes)) {
- return $status ? [$codpes, $valido] : $codpes;
- } else {
- return null;
+
+ /**
+ * Retorna o codpes do usuário ldap
+ *
+ * O codpes pode ser o username ou o employeeNumber e é setado no config.
+ * Se não encontrar no campo apropriado faz a busca no outro campo
+ * para o caso de ter mudado a regra ao longo do uso
+ *
+ * Se não retornar codpes o status pode ser qualquer
+ *
+ * @param LdapRecord\Models\ActiveDirectory\User $user
+ * @param $status Se true retorna se o codpes veio do campo correto ou não, segundo o config
+ * @return Int|Array|Null
+ */
+ public static function obterCodpes(LdapUser $user, Bool $status = false)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.index)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" (LdapUserController::show, my)
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" (LdapUserController::show, my -> User::show)
+
+ $valido = true;
+ switch (strtolower(config('web-ldap-admin.campoCodpes'))) {
+ case 'employeenumber':
+ if (!is_numeric($codpes = $user->getFirstAttribute('employeenumber'))) {
+ $codpes = $user->getFirstAttribute('samaccountname');
+ $valido = false;
+ }
+ break;
+ case 'username':
+ default:
+ if (!is_numeric($codpes = $user->getFirstAttribute('samaccountname'))) {
+ $codpes = $user->getFirstAttribute('employeenumber');
+ $valido = false;
+ }
+ break;
+ }
+ if (is_numeric($codpes)) {
+ return $status ? [$codpes, $valido] : $codpes;
+ } else {
+ return null;
+ }
}
- }
- public static function delete(String $username)
- {
- // invocado por:
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Excluir" (LdapUserController::destroy)
+ public static function delete(String $username)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> botão "Excluir" (LdapUserController::destroy)
- $user = SELF::obterUserPorUsername($username);
- if (!is_null($user)) {
- $user->delete();
- return true;
+ $user = SELF::obterUserPorUsername($username);
+ if (!is_null($user)) {
+ $user->delete();
+ return true;
+ }
+ return false;
}
- return false;
- }
-
- public static function disable(String $username)
- {
- // invocado por:
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::desativarUsers)
-
- $user = SELF::obterUserPorUsername($username);
- if (!is_null($user)) {
- # https://support.microsoft.com/pt-br/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro
- $user->useraccountcontrol = AccountControl::ACCOUNTDISABLE;
- $user->save();
- return true;
+
+ public static function disable(String $username)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync -> User::desativarUsers)
+
+ $user = SELF::obterUserPorUsername($username);
+ if (!is_null($user)) {
+ # https://support.microsoft.com/pt-br/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro
+ $user->useraccountcontrol = AccountControl::ACCOUNTDISABLE;
+ $user->save();
+ return true;
+ }
+ return false;
}
- return false;
- }
- public static function enable(String $username)
- {
- // invocado por:
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
+ public static function enable(String $username)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
- $user = SELF::obterUserPorUsername($username);
+ $user = SELF::obterUserPorUsername($username);
- if (!is_null($user)) {
- # https://support.microsoft.com/pt-br/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro
- $user->useraccountcontrol = AccountControl::NORMAL_ACCOUNT;
- $user->save();
- return true;
+ if (!is_null($user)) {
+ # https://support.microsoft.com/pt-br/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro
+ $user->useraccountcontrol = AccountControl::NORMAL_ACCOUNT;
+ $user->save();
+ return true;
+ }
+ return false;
}
- return false;
- }
- public static function changePassword($username, String $password, $must_change_pwd = null): bool
- {
- // invocado por:
- // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
+ public static function changePassword($username, String $password, $must_change_pwd = null): bool
+ {
+ // invocado por:
+ // menu "Usuários Ldap" -> algum usuário Ldap, menu "Minha Conta (trocar senha da rede)" -> alguma opção do menu de expiração de conta, alguma opção do menu de habilitar/desabilitar, botão "Alterar" (LdapUserController::update)
- $user = SELF::obterUserPorUsername($username);
- if (is_null($user)) {
- return false;
- }
+ $user = SELF::obterUserPorUsername($username);
+ if (is_null($user)) {
+ return false;
+ }
- $user->unicodepwd = $password;
- // Leonardo Ruiz: Alteracao de senha nao deve alterar validade da conta
- //$user->setAccountExpiry(SELF::getExpiryDays());
+ $user->unicodepwd = $password;
+ // Leonardo Ruiz: Alteracao de senha nao deve alterar validade da conta
+ //$user->setAccountExpiry(SELF::getExpiryDays());
- if ($must_change_pwd) {
- $user->pwdlastset = 0;
- }
+ if ($must_change_pwd) {
+ $user->pwdlastset = 0;
+ }
- try {
- $user->save();
- $result = true;
- } catch (\Exception $e) {
- echo (Gate::check('manager')) ? $e->getMessage() : null;
- $result = false;
- }
- return $result;
- }
-
- public static function getUsersGroup($grupo)
- {
- // invocado por:
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" (LdapUserController::syncReplicadoForm)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync)
-
- $ldapusers = [];
- $group = LdapGroupModel::findBy('cn', $grupo);
- if ($group != false) {
- $ldapusers = LdapUser::query();
- $ldapusers = $ldapusers->where('memberof', '=', $group->getDn());
- foreach (config('web-ldap-admin.ocultarUsuarios') as $ocultar) {
- $ldapusers = $ldapusers->where('samaccountname', '!=', $ocultar);
- }
- $ldapusers = $ldapusers->orderBy('displayname', 'asc');
- $ldapusers = $ldapusers->paginate(config('web-ldap-admin.registrosPorPagina'));
+ try {
+ $user->save();
+ $result = true;
+ } catch (\Exception $e) {
+ echo (Gate::check('manager')) ? $e->getMessage() : null;
+ $result = false;
+ }
+ return $result;
}
- return $ldapusers;
- }
+ public static function getUsersGroup($grupo)
+ {
+ // invocado por:
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" (LdapUserController::syncReplicadoForm)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync)
+
+ $ldapusers = [];
+ $group = LdapGroupModel::findBy('cn', $grupo);
+ if ($group != false) {
+ $ldapusers = LdapUser::query();
+ $ldapusers = $ldapusers->where('memberof', '=', $group->getDn());
+ foreach (config('web-ldap-admin.ocultarUsuarios') as $ocultar) {
+ $ldapusers = $ldapusers->where('samaccountname', '!=', $ocultar);
+ }
+ $ldapusers = $ldapusers->orderBy('displayname', 'asc');
+ $ldapusers = $ldapusers->paginate(config('web-ldap-admin.registrosPorPagina'));
+ }
- public static function desativarUsers($desligados)
- {
- // invocado por:
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync)
+ return $ldapusers;
+ }
- foreach ($desligados as $desligado) {
- // remover dos grupos
- $user = SELF::obterUserPorUsername($desligado);
- $groups = $user->groups()->get();
+ public static function desativarUsers($desligados)
+ {
+ // invocado por:
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync)
- foreach ($groups as $group) {
- echo "{$desligado}:
";
- $group->members()->detach($user);
- }
+ foreach ($desligados as $desligado) {
+ // remover dos grupos
+ $user = SELF::obterUserPorUsername($desligado);
+ $groups = $user->groups()->get();
- // adicionar ao grupo Desativados
- LdapGroup::addMember($user, ['Desativados']);
+ foreach ($groups as $group) {
+ echo "{$desligado}:
";
+ $group->members()->detach($user);
+ }
- // desativar conta
- self::disable($desligado);
- }
- }
-
- /**
- * Cria ou atualiza recebendo o array da pessoa
- *
- * em $pessoa: codema, codpes, dtanas (tabela pessoa), nomabvset, nompesttd (dados da tabela localizapessoa)
- *
- * @param array $pessoa
- * @author Alessandro Costa de Oliveira 11/03/2022
- */
- public static function criarOuAtualizarPorArray($pessoa, $metodo = '')
- {
- // invocado por:
- // no login (LoginListener::handle)
- // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store)
- // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync)
-
- // setando username e codpes (similar loginListener)
- switch (strtolower(config('web-ldap-admin.campoCodpes'))) {
- case 'employeenumber':
- $email = Pessoa::retornarEmailUsp($pessoa['codpes']) ?? $pessoa['codema'];
- $email = empty($email) ?: Pessoa::email($pessoa['codpes']);
- $username = explode('@', $email)[0];
- $username = preg_replace("/[^a-zA-Z0-9]+/", "", $username); //email sem caracteres especiais
- $username = substr($username, 0, 15); //limitando em 15 caracteres
- $attr['employeeNumber'] = $pessoa['codpes'];
- // dd($email, $pessoa);
- break;
- case 'username':
- default:
- $username = $pessoa['codpes'];
- $attr['employeeNumber'] = '';
- break;
- }
- // setando para testes se não vier dtanas
- if (!isset($pessoa['dtanas'])) {
- $pessoa['dtanas'] = '1/1/1970';
+ // adicionar ao grupo Desativados
+ LdapGroup::addMember($user, ['Desativados']);
+
+ // desativar conta
+ self::disable($desligado);
+ }
}
- // setando senha
- switch (config('web-ldap-admin.senhaPadrao')) {
- case 'random':
- $password = Utils::senhaAleatoria();
- break;
+ /**
+ * Cria ou atualiza recebendo o array da pessoa
+ *
+ * em $pessoa: codema, codpes, dtanas (tabela pessoa), nomabvset, nompesttd (dados da tabela localizapessoa)
+ *
+ * @param array $pessoa
+ * @author Alessandro Costa de Oliveira 11/03/2022
+ */
+ public static function criarOuAtualizarPorArray($pessoa, $metodo = '')
+ {
+ // invocado por:
+ // no login (LoginListener::handle)
+ // menu "Criar usuário" -> botão "Enviar Dados" (LdapUserController::store)
+ // menu "Sincronizar ..." -> botão "Sincronizar com replicado" -> botão "Sincronizar" (SincronizaReplicado::handle::sync)
+
+ // setando username e codpes (similar loginListener)
+ switch (strtolower(config('web-ldap-admin.campoCodpes'))) {
+ case 'employeenumber':
+ $email = Pessoa::retornarEmailUsp($pessoa['codpes']) ?? $pessoa['codema'];
+ $email = empty($email) ?: Pessoa::email($pessoa['codpes']);
+ $username = explode('@', $email)[0];
+ $username = preg_replace("/[^a-zA-Z0-9]+/", "", $username); //email sem caracteres especiais
+ $username = substr($username, 0, 15); //limitando em 15 caracteres
+ $attr['employeeNumber'] = $pessoa['codpes'];
+ // dd($email, $pessoa);
+ break;
+ case 'username':
+ default:
+ $username = $pessoa['codpes'];
+ $attr['employeeNumber'] = '';
+ break;
+ }
+ // setando para testes se não vier dtanas
+ if (!isset($pessoa['dtanas'])) {
+ $pessoa['dtanas'] = '1/1/1970';
+ }
- case 'data_nascimento':
- default:
- $password = ($pessoa['dtanas'] != '') ? date('dmY', strtotime($pessoa['dtanas'])) : Utils::senhaAleatoria();
- }
+ // setando senha
+ switch (config('web-ldap-admin.senhaPadrao')) {
+ case 'random':
+ $password = Utils::senhaAleatoria();
+ break;
+
+ case 'data_nascimento':
+ default:
+ $password = ($pessoa['dtanas'] != '') ? date('dmY', strtotime($pessoa['dtanas'])) : Utils::senhaAleatoria();
+ }
- if ($pessoa['nomabvset']) {
- // o setor é o vínculo estendido + setor (sem o código da unidade)
- $setor = $pessoa['tipvinext'] . ' ' . explode('-', $pessoa['nomabvset'])[0];
- } else {
- $setor = $pessoa['tipvinext'];
- if ($pessoa['tipvinext'] == 'Aluno de Graduação') {
- if (empty(config('web-ldap-admin.grCursoSetor'))) {
- try {
- $nomabvset = Graduacao::setorAluno($pessoa['codpes'], config('web-ldap-admin.replicado_unidade'))['nomabvset'];
- } catch (\Exception $e) {
- $nomabvset = 'Sem departamento';
- }
+ if ($pessoa['nomabvset']) {
+ // o setor é o vínculo estendido + setor (sem o código da unidade)
+ $setor = $pessoa['tipvinext'] . ' ' . explode('-', $pessoa['nomabvset'])[0];
} else {
- $curso = Graduacao::curso($pessoa['codpes'], config('web-ldap-admin.replicado_unidade'));
- $codcur = $curso['codcur'];
- $codhab = $curso['codhab'];
- foreach (config('web-ldap-admin.grCursoSetor') as $grCursoSetor) {
- if ($grCursoSetor['codcur'] == $codcur && $grCursoSetor['codhab'] == $codhab) {
- $nomabvset = $grCursoSetor['nomabvset'];
+ $setor = $pessoa['tipvinext'];
+ if ($pessoa['tipvinext'] == 'Aluno de Graduação') {
+ if (empty(config('web-ldap-admin.grCursoSetor'))) {
+ try {
+ $nomabvset = Graduacao::obterSetorAluno($pessoa['codpes'], config('web-ldap-admin.replicado_unidade'))['nomabvset'];
+ } catch (\Exception $e) {
+ $nomabvset = 'Sem departamento';
+ }
+ } else {
+ $curso = Graduacao::obterCursoAtivo($pessoa['codpes']);
+ $codcur = $curso['codcur'];
+ $codhab = $curso['codhab'];
+ foreach (config('web-ldap-admin.grCursoSetor') as $grCursoSetor) {
+ if ($grCursoSetor['codcur'] == $codcur && $grCursoSetor['codhab'] == $codhab) {
+ $nomabvset = $grCursoSetor['nomabvset'];
+ }
+ }
+ }
+ $setor = (isset($nomabvset)) ? trim($pessoa['tipvinext'] . ' ' . $nomabvset) : $pessoa['tipvinext'];
}
- }
+ // aqui poderia tratar os outros casos de Pós Graduação, Posdoc, etc
+ }
+ $attr['setor'] = $setor;
+
+ $attr['nome'] = $pessoa['nompesttd'] ?? $pessoa['nompes'];
+ $attr['email'] = $pessoa['codema'];
+
+ $attr['descricao'] = 'Sincronizado com o replicado';
+
+ if ($pessoa['tipvinext'] != 'Externo') {
+ if (config('web-ldap-admin.tipoNomesGrupos') == 'extenso') {
+ $vinculosSetores = LdapPessoa::listarVinculosSetores($pessoa['codpes'], config('web-ldap-admin.replicado_unidade'));
+ foreach ($vinculosSetores as $key => $value) {
+ if ($value == 'Aluno de Graduação' && isset($nomabvset)) {
+ $vinculosSetores[1] = 'Aluno de Graduação ' . $nomabvset;
+ }
+ }
+ $grupos = ($pessoa['tipvinext'] != 'Externo') ? $vinculosSetores : [$pessoa['tipvinext']];
+ }
+ if (config('web-ldap-admin.tipoNomesGrupos') == 'siglas') {
+ $setores = Pessoa::obterSiglasSetoresAtivos($pessoa['codpes']);
+ $vinculos = Pessoa::obterSiglasVinculosAtivos($pessoa['codpes']);
+ // caso não haja vinculos ou setores, vamos deixar como array
+ if (is_null($setores)) $setores = [];
+ if (is_null($vinculos)) $vinculos = [];
+ $grupos = array_merge($setores, $vinculos);
+ }
+ } else {
+ $grupos = [$pessoa['tipvinext']];
}
- $setor = (isset($nomabvset)) ? trim($pessoa['tipvinext'] . ' ' . $nomabvset) : $pessoa['tipvinext'];
- }
- // aqui poderia tratar os outros casos de Pós Graduação, Posdoc, etc
- }
- $attr['setor'] = $setor;
- $attr['nome'] = $pessoa['nompesttd'] ?? $pessoa['nompes'];
- $attr['email'] = $pessoa['codema'];
+ // Se a sincronização dos grupos com o replicado for desativada, vamos mandar esse array vazio
+ if (config('web-ldap-admin.syncGroupsWithReplicado') == 'no') {
+ $grupos = [];
+ }
- $attr['descricao'] = 'Sincronizado com o replicado';
+ $grupos = array_unique($grupos);
+ sort($grupos);
- if ($pessoa['tipvinext'] != 'Externo') {
- if (config('web-ldap-admin.tipoNomesGrupos') == 'extenso') {
- $vinculosSetores = Pessoa::vinculosSetores($pessoa['codpes'], config('web-ldap-admin.replicado_unidade'));
- foreach ($vinculosSetores as $key => $value) {
- if ($value == 'Aluno de Graduação' && isset($nomabvset)) {
- $vinculosSetores[1] = 'Aluno de Graduação ' . $nomabvset;
- }
- }
- $grupos = ($pessoa['tipvinext'] != 'Externo') ? $vinculosSetores : [$pessoa['tipvinext']];
- }
- if (config('web-ldap-admin.tipoNomesGrupos') == 'siglas') {
- $setores = Pessoa::obterSiglasSetoresAtivos($pessoa['codpes']);
- $vinculos = Pessoa::obterSiglasVinculosAtivos($pessoa['codpes']);
- // caso não haja vinculos ou setores, vamos deixar como array
- if (is_null($setores)) $setores = [];
- if (is_null($vinculos)) $vinculos = [];
- $grupos = array_merge($setores, $vinculos);
- }
- } else {
- $grupos = [$pessoa['tipvinext']];
+ // só grava o usuário no servidor LDAP se ele pertencer a vínculos autorizados para tal
+ // (tanto no login do usuário quanto na sincronização com o replicado)
+ //if ((array_filter(config('web-ldap-admin.vinculos_autorizados')) === []) || // quando a variável não foi configurada, permitimos todos os usuários (como sempre havia sido)
+ // !empty(array_intersect($grupos, config('web-ldap-admin.vinculos_autorizados')))) // só permite se o usuário for de um dos vínculos autorizados
+ return self::createOrUpdate($username, $attr, $grupos, $password);
}
- // Se a sincronização dos grupos com o replicado for desativada, vamos mandar esse array vazio
- if (config('web-ldap-admin.syncGroupsWithReplicado') == 'no') {
- $grupos = [];
+ /**
+ * Verifica se a conta está expirada (Retorna true/false)
+ */
+ public static function getIsExpired($user)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.partials.expiry)
+
+ $expira = ldapToCarbon($user, 'accountexpires');
+ return $expira ? $expira->isPast() : false;
}
- $grupos = array_unique($grupos);
- sort($grupos);
-
- // só grava o usuário no servidor LDAP se ele pertencer a vínculos autorizados para tal
- // (tanto no login do usuário quanto na sincronização com o replicado)
- //if ((array_filter(config('web-ldap-admin.vinculos_autorizados')) === []) || // quando a variável não foi configurada, permitimos todos os usuários (como sempre havia sido)
- // !empty(array_intersect($grupos, config('web-ldap-admin.vinculos_autorizados')))) // só permite se o usuário for de um dos vínculos autorizados
- return self::createOrUpdate($username, $attr, $grupos, $password);
- }
-
- /**
- * Verifica se a conta está expirada (Retorna true/false)
- */
- public static function getIsExpired($user)
- {
- // invocado por:
- // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.partials.expiry)
-
- $expira = ldapToCarbon($user, 'accountexpires');
- return $expira ? $expira->isPast() : false;
- }
-
- /**
- * Retorna a data de expiração como objeto Carbon ou null
- */
- public static function getExpirationDate($user)
- {
- // invocado por:
- // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.partials.expiry)
-
- return ldapToCarbon($user, 'accountexpires');
- }
-
- /**
- * Retorna um array com os nomes (CN) dos grupos do usuário
- */
- public static function getGroupNames($user)
- {
- // invocado por:
- // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.index)
-
- return $user->groups()->get()->pluck('cn')->flatten()->toArray();
- }
+ /**
+ * Retorna a data de expiração como objeto Carbon ou null
+ */
+ public static function getExpirationDate($user)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.partials.expiry)
+
+ return ldapToCarbon($user, 'accountexpires');
+ }
+
+ /**
+ * Retorna um array com os nomes (CN) dos grupos do usuário
+ */
+ public static function getGroupNames($user)
+ {
+ // invocado por:
+ // menu "Usuários Ldap" (LdapUserController::index -> ldapusers.index)
+
+ return $user->groups()->get()->pluck('cn')->flatten()->toArray();
+ }
}
diff --git a/app/Policies/LdapUserPolicy.php b/app/Policies/LdapUserPolicy.php
index a302d6e..ad82b14 100644
--- a/app/Policies/LdapUserPolicy.php
+++ b/app/Policies/LdapUserPolicy.php
@@ -11,85 +11,85 @@
class LdapUserPolicy
{
- use HandlesAuthorization;
+ use HandlesAuthorization;
- public $is_superAdmin;
+ public $is_superAdmin;
- public function __construct()
- {
- $this->is_superAdmin = Gate::allows('admin');
- }
+ public function __construct()
+ {
+ $this->is_superAdmin = Gate::allows('admin');
+ }
- /**
- * Determine whether the user can view the ldap user.
- *
- * @param \App\User $user
- * @param \App\LdapUser $ldapUser
- * @return mixed
- */
- public function view(User $user, $id)
- {
- $owner = $user->username_senhaunica === $id;
- return $owner || $this->is_superAdmin;
- }
+ /**
+ * Determine whether the user can view the ldap user.
+ *
+ * @param \App\User $user
+ * @param \App\LdapUser $ldapUser
+ * @return mixed
+ */
+ public function view(User $user, $id)
+ {
+ $owner = $user->username_senhaunica === $id;
+ return $owner || $this->is_superAdmin;
+ }
- /**
- * Determine whether the user can create ldap users.
- *
- * @param \App\User $user
- * @return mixed
- */
- public function create(User $user)
- {
- //
- }
+ /**
+ * Determine whether the user can create ldap users.
+ *
+ * @param \App\User $user
+ * @return mixed
+ */
+ public function create(User $user)
+ {
+ //
+ }
- /**
- * Determine whether the user can update the ldap user.
- *
- * @param \App\User $user
- * @param \App\LdapUser $ldapUser
- * @return mixed
- */
- public function update(User $user, $id)
- {
- $owner = $user->username_senhaunica === $id;
- return $owner || $this->is_superAdmin;
- }
+ /**
+ * Determine whether the user can update the ldap user.
+ *
+ * @param \App\User $user
+ * @param \App\LdapUser $ldapUser
+ * @return mixed
+ */
+ public function update(User $user, $id)
+ {
+ $owner = $user->username_senhaunica === $id;
+ return $owner || $this->is_superAdmin;
+ }
- /**
- * Determine whether the user can delete the ldap user.
- *
- * @param \App\User $user
- * @param \App\LdapUser $ldapUser
- * @return mixed
- */
- public function delete(User $user)
- {
- //
- }
+ /**
+ * Determine whether the user can delete the ldap user.
+ *
+ * @param \App\User $user
+ * @param \App\LdapUser $ldapUser
+ * @return mixed
+ */
+ public function delete(User $user)
+ {
+ //
+ }
- /**
- * Determine whether the user can restore the ldap user.
- *
- * @param \App\User $user
- * @param \App\LdapUser $ldapUser
- * @return mixed
- */
- public function restore(User $user)
- {
- //
- }
+ /**
+ * Determine whether the user can restore the ldap user.
+ *
+ * @param \App\User $user
+ * @param \App\LdapUser $ldapUser
+ * @return mixed
+ */
+ public function restore(User $user)
+ {
+ //
+ }
- /**
- * Determine whether the user can permanently delete the ldap user.
- *
- * @param \App\User $user
- * @param \App\LdapUser $ldapUser
- * @return mixed
- */
- public function forceDelete(User $user)
- {
- //
- }
+ /**
+ * Determine whether the user can permanently delete the ldap user.
+ *
+ * @param \App\User $user
+ * @param \App\LdapUser $ldapUser
+ * @return mixed
+ */
+ public function forceDelete(User $user)
+ {
+ //
+ }
}
diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php
index 04a89d0..05099a0 100644
--- a/app/Providers/ViewServiceProvider.php
+++ b/app/Providers/ViewServiceProvider.php
@@ -8,56 +8,56 @@
class ViewServiceProvider extends ServiceProvider
{
- /**
- * Register any application services.
- *
- * @return void
- */
- public function register()
- {
- //
- }
+ /**
+ * Register any application services.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ //
+ }
- /**
- * Bootstrap any application services.
- *
- * @return void
- */
- public function boot()
- {
- // Using class based composers...
- View::composer('profile', ProfileComposer::class);
+ /**
+ * Bootstrap any application services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ // Using class based composers...
+ View::composer('profile', ProfileComposer::class);
- // Using closure based composers...
- View::composer('*', function ($view) {
- // Menu dinâmico solicita conta admin
- $menuContaAdmin = [
- 'text' => 'Solicitação de Conta de Administrador',
- 'url' => 'solicita',
- 'can' => 'ninguem',
- ];
+ // Using closure based composers...
+ View::composer('*', function ($view) {
+ // Menu dinâmico solicita conta admin
+ $menuContaAdmin = [
+ 'text' => 'Solicitação de Conta de Administrador',
+ 'url' => 'solicita',
+ 'can' => 'ninguem',
+ ];
- if (config('web-ldap-admin.solicitaContaAdmin') == 1) {
- $menuContaAdmin['can'] = 'user';
- \UspTheme::addMenu('solicitaContaAdmin', $menuContaAdmin);
- } elseif (config('web-ldap-admin.solicitaContaAdmin') == 2) {
- $menuContaAdmin['can'] = 'servidor';
- \UspTheme::addMenu('solicitaContaAdmin', $menuContaAdmin);
- }
+ if (config('web-ldap-admin.solicitaContaAdmin') == 1) {
+ $menuContaAdmin['can'] = 'user';
+ \UspTheme::addMenu('solicitaContaAdmin', $menuContaAdmin);
+ } elseif (config('web-ldap-admin.solicitaContaAdmin') == 2) {
+ $menuContaAdmin['can'] = 'servidor';
+ \UspTheme::addMenu('solicitaContaAdmin', $menuContaAdmin);
+ }
- // menu dinâmico badge indicando syncronização de login ativa
- if (config('web-ldap-admin.sincLdapLogin') == 1) {
- $text = 'on ';
- $title = 'Sincronização automática ativada';
- } else {
- $text = ' off ';
- $title = 'Sincronização automática desativada';
- }
- \UspTheme::addMenu('web-ldap-admin', [
- 'text' => $text,
- 'title' => $title,
- 'can' => 'manager',
- ]);
- });
- }
+ // menu dinâmico badge indicando syncronização de login ativa
+ if (config('web-ldap-admin.sincLdapLogin') == 1) {
+ $text = 'on ';
+ $title = 'Sincronização automática ativada';
+ } else {
+ $text = ' off ';
+ $title = 'Sincronização automática desativada';
+ }
+ \UspTheme::addMenu('web-ldap-admin', [
+ 'text' => $text,
+ 'title' => $title,
+ 'can' => 'manager',
+ ]);
+ });
+ }
}
diff --git a/app/Replicado/Pessoa.php b/app/Replicado/Pessoa.php
index 6ff08eb..2d07e30 100644
--- a/app/Replicado/Pessoa.php
+++ b/app/Replicado/Pessoa.php
@@ -4,6 +4,7 @@
use Uspdev\Replicado\DB;
use Uspdev\Replicado\Pessoa as ReplicadoPessoa;
+use Uspdev\Replicado\Graduacao as Graduacao;
class Pessoa extends ReplicadoPessoa
{
@@ -51,7 +52,7 @@ public static function listarVinculosSetores(int $codpes, $codundclg = null) # c
AND codundclg IN ({$codundclg})";
$param['codpes'] = $codpes;
$result = DB::fetchAll($query, $param);
- dd($result);
+ //dd($result);
// Inicializa o array de vínculos e setores
$vinculosSetores = array();
foreach ($result as $row) {
@@ -62,7 +63,7 @@ public static function listarVinculosSetores(int $codpes, $codundclg = null) # c
// Adiciona o departamento quando também for Aluno de Graduação
if (trim($row['tipvinext']) == 'Aluno de Graduação') {
// Considerando o primeiro código de unidade
- $setorGraduacao = Graduacao::setorAluno($row['codpes'], $arrCodUnidades[0])['nomabvset'];
+ $setorGraduacao = Graduacao::obterSetorAluno($row['codpes'], $arrCodUnidades[0])['nomabvset'];
array_push($vinculosSetores, $row['tipvinext'] . ' ' . $setorGraduacao);
}
}
@@ -81,6 +82,4 @@ public static function listarVinculosSetores(int $codpes, $codundclg = null) # c
sort($vinculosSetores);
return $vinculosSetores;
}
-
-
}
diff --git a/app/helpers.php b/app/helpers.php
index 0dc6488..1e17da5 100644
--- a/app/helpers.php
+++ b/app/helpers.php
@@ -4,29 +4,29 @@
use LdapRecord\Models\Model;
if (!function_exists('ldapToCarbon')) {
- /**
- * Converte um atributo do LDAP em Carbon, aceitando int, string ou objetos
- */
- function ldapToCarbon($user, string $attribute)
- {
- if (!$user instanceof Model)
- return null;
+ /**
+ * Converte um atributo do LDAP em Carbon, aceitando int, string ou objetos
+ */
+ function ldapToCarbon($user, string $attribute)
+ {
+ if (!$user instanceof Model)
+ return null;
- $raw = $user->getFirstAttribute($attribute);
+ $raw = $user->getFirstAttribute($attribute);
- // se já for um objeto de data (Carbon ou DateTime), retorna direto!
- if ($raw instanceof DateTimeInterface)
- return Carbon::instance($raw);
+ // se já for um objeto de data (Carbon ou DateTime), retorna direto!
+ if ($raw instanceof DateTimeInterface)
+ return Carbon::instance($raw);
- // checagem dos valores "eternos" do Active Directory
- if (empty($raw) || $raw == 0 || $raw == '9223372036854775807')
- return null;
+ // checagem dos valores "eternos" do Active Directory
+ if (empty($raw) || $raw == 0 || $raw == '9223372036854775807')
+ return null;
- try {
- // o asDateTime() faz a mágica de converter int para objeto
- return Carbon::instance($user->asDateTime($raw));
- } catch (\Exception $e) {
- return null;
+ try {
+ // o asDateTime() faz a mágica de converter int para objeto
+ return Carbon::instance($user->asDateTime($raw));
+ } catch (\Exception $e) {
+ return null;
+ }
}
- }
}
diff --git a/composer.lock b/composer.lock
index ebbdb0b..acdcb30 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "4656a4ea565a3115b5d9fad89e8a463d",
+ "content-hash": "0e61b759215c063812a4bc7c073996f6",
"packages": [
{
"name": "brick/math",
@@ -1482,16 +1482,16 @@
},
{
"name": "laravel/framework",
- "version": "v12.61.1",
+ "version": "v12.51.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "e8472ca9774452fe50841d9bdced060679f4d58d"
+ "reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/e8472ca9774452fe50841d9bdced060679f4d58d",
- "reference": "e8472ca9774452fe50841d9bdced060679f4d58d",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/ce4de3feb211e47c4f959d309ccf8a2733b1bc16",
+ "reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16",
"shasum": ""
},
"require": {
@@ -1700,7 +1700,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2026-06-04T14:22:52+00:00"
+ "time": "2026-02-10T18:20:19+00:00"
},
{
"name": "laravel/helpers",
@@ -1761,16 +1761,16 @@
},
{
"name": "laravel/prompts",
- "version": "v0.3.18",
+ "version": "v0.3.13",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "a19af51bb144bf87f08397921fa619f85c7d4e72"
+ "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/a19af51bb144bf87f08397921fa619f85c7d4e72",
- "reference": "a19af51bb144bf87f08397921fa619f85c7d4e72",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/ed8c466571b37e977532fb2fd3c272c784d7050d",
+ "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d",
"shasum": ""
},
"require": {
@@ -1814,22 +1814,22 @@
"description": "Add beautiful and user-friendly forms to your command-line applications.",
"support": {
"issues": "https://github.com/laravel/prompts/issues",
- "source": "https://github.com/laravel/prompts/tree/v0.3.18"
+ "source": "https://github.com/laravel/prompts/tree/v0.3.13"
},
- "time": "2026-05-19T00:47:18+00:00"
+ "time": "2026-02-06T12:17:10+00:00"
},
{
"name": "laravel/serializable-closure",
- "version": "v2.0.13",
+ "version": "v2.0.9",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "b566ee0dd251f3c4078bed003a7ce015f5ea6dce"
+ "reference": "8f631589ab07b7b52fead814965f5a800459cb3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b566ee0dd251f3c4078bed003a7ce015f5ea6dce",
- "reference": "b566ee0dd251f3c4078bed003a7ce015f5ea6dce",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/8f631589ab07b7b52fead814965f5a800459cb3e",
+ "reference": "8f631589ab07b7b52fead814965f5a800459cb3e",
"shasum": ""
},
"require": {
@@ -1877,7 +1877,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2026-04-16T14:03:50+00:00"
+ "time": "2026-02-03T06:55:34+00:00"
},
{
"name": "laravel/socialite",
@@ -2925,16 +2925,16 @@
},
{
"name": "nette/schema",
- "version": "v1.3.5",
+ "version": "v1.3.4",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
- "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002"
+ "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002",
- "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002",
+ "url": "https://api.github.com/repos/nette/schema/zipball/086497a2f34b82fede9b5a41cc8e131d087cd8f7",
+ "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7",
"shasum": ""
},
"require": {
@@ -2942,10 +2942,8 @@
"php": "8.1 - 8.5"
},
"require-dev": {
- "nette/phpstan-rules": "^1.0",
"nette/tester": "^2.6",
- "phpstan/extension-installer": "^1.4@stable",
- "phpstan/phpstan": "^2.1.39@stable",
+ "phpstan/phpstan": "^2.0@stable",
"tracy/tracy": "^2.8"
},
"type": "library",
@@ -2986,22 +2984,22 @@
],
"support": {
"issues": "https://github.com/nette/schema/issues",
- "source": "https://github.com/nette/schema/tree/v1.3.5"
+ "source": "https://github.com/nette/schema/tree/v1.3.4"
},
- "time": "2026-02-23T03:47:12+00:00"
+ "time": "2026-02-08T02:54:00+00:00"
},
{
"name": "nette/utils",
- "version": "v4.1.4",
+ "version": "v4.1.3",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
- "reference": "7da6c396d7ebe142bc857c20479d5e70a5e1aac7"
+ "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/7da6c396d7ebe142bc857c20479d5e70a5e1aac7",
- "reference": "7da6c396d7ebe142bc857c20479d5e70a5e1aac7",
+ "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe",
+ "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe",
"shasum": ""
},
"require": {
@@ -3077,9 +3075,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v4.1.4"
+ "source": "https://github.com/nette/utils/tree/v4.1.3"
},
- "time": "2026-05-11T20:49:54+00:00"
+ "time": "2026-02-13T03:05:33+00:00"
},
{
"name": "nikic/php-parser",
@@ -3993,16 +3991,16 @@
},
{
"name": "psy/psysh",
- "version": "v0.12.23",
+ "version": "v0.12.20",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "4dcc0f08047d52bbde475eda481146fd8e27e1a4"
+ "reference": "19678eb6b952a03b8a1d96ecee9edba518bb0373"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4dcc0f08047d52bbde475eda481146fd8e27e1a4",
- "reference": "4dcc0f08047d52bbde475eda481146fd8e27e1a4",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/19678eb6b952a03b8a1d96ecee9edba518bb0373",
+ "reference": "19678eb6b952a03b8a1d96ecee9edba518bb0373",
"shasum": ""
},
"require": {
@@ -4066,9 +4064,9 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.12.23"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.12.20"
},
- "time": "2026-05-23T13:41:31+00:00"
+ "time": "2026-02-11T15:05:28+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -4457,16 +4455,16 @@
},
{
"name": "spatie/laravel-permission",
- "version": "7.4.2",
+ "version": "6.24.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-permission.git",
- "reference": "15a9daf02ba02d3ae77aaa6da582708231ef999b"
+ "reference": "eefc9d17eba80d023d6bff313f882cb2bcd691a3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/15a9daf02ba02d3ae77aaa6da582708231ef999b",
- "reference": "15a9daf02ba02d3ae77aaa6da582708231ef999b",
+ "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/eefc9d17eba80d023d6bff313f882cb2bcd691a3",
+ "reference": "eefc9d17eba80d023d6bff313f882cb2bcd691a3",
"shasum": ""
},
"require": {
@@ -4532,7 +4530,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-permission/issues",
- "source": "https://github.com/spatie/laravel-permission/tree/7.4.2"
+ "source": "https://github.com/spatie/laravel-permission/tree/6.24.1"
},
"funding": [
{
@@ -4540,7 +4538,7 @@
"type": "github"
}
],
- "time": "2026-05-30T19:21:26+00:00"
+ "time": "2026-02-09T21:10:03+00:00"
},
{
"name": "symfony/clock",
@@ -7886,16 +7884,16 @@
},
{
"name": "laravel/sail",
- "version": "v1.62.0",
+ "version": "v1.53.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/sail.git",
- "reference": "3aaeefc979f8ba6586fbc5b6e0b1b3638058f98e"
+ "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/sail/zipball/3aaeefc979f8ba6586fbc5b6e0b1b3638058f98e",
- "reference": "3aaeefc979f8ba6586fbc5b6e0b1b3638058f98e",
+ "url": "https://api.github.com/repos/laravel/sail/zipball/e340eaa2bea9b99192570c48ed837155dbf24fbb",
+ "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb",
"shasum": ""
},
"require": {
@@ -7945,7 +7943,7 @@
"issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail"
},
- "time": "2026-05-27T04:02:01+00:00"
+ "time": "2026-02-06T12:16:02+00:00"
},
{
"name": "lucascudo/laravel-pt-br-localization",
@@ -8431,16 +8429,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "12.5.7",
+ "version": "12.5.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "186dab580576598076de6818596d12b61801880e"
+ "reference": "b015312f28dd75b75d3422ca37dff2cd1a565e8d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/186dab580576598076de6818596d12b61801880e",
- "reference": "186dab580576598076de6818596d12b61801880e",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b015312f28dd75b75d3422ca37dff2cd1a565e8d",
+ "reference": "b015312f28dd75b75d3422ca37dff2cd1a565e8d",
"shasum": ""
},
"require": {
@@ -8495,7 +8493,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.7"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.3"
},
"funding": [
{
@@ -8515,7 +8513,7 @@
"type": "tidelift"
}
],
- "time": "2026-06-01T13:24:19+00:00"
+ "time": "2026-02-06T06:01:44+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -8776,16 +8774,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "12.5.29",
+ "version": "12.5.11",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "9aa66a47db3ea70f1a468e66dd969f67e594945a"
+ "reference": "9b518cb40f9474572c9f0178e96ff3dc1cf02bf1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9aa66a47db3ea70f1a468e66dd969f67e594945a",
- "reference": "9aa66a47db3ea70f1a468e66dd969f67e594945a",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b518cb40f9474572c9f0178e96ff3dc1cf02bf1",
+ "reference": "9b518cb40f9474572c9f0178e96ff3dc1cf02bf1",
"shasum": ""
},
"require": {
@@ -8799,7 +8797,7 @@
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
"php": ">=8.3",
- "phpunit/php-code-coverage": "^12.5.7",
+ "phpunit/php-code-coverage": "^12.5.3",
"phpunit/php-file-iterator": "^6.0.1",
"phpunit/php-invoker": "^6.0.0",
"phpunit/php-text-template": "^5.0.0",
@@ -8812,7 +8810,7 @@
"sebastian/global-state": "^8.0.3",
"sebastian/object-enumerator": "^7.0.0",
"sebastian/recursion-context": "^7.0.1",
- "sebastian/type": "^6.0.4",
+ "sebastian/type": "^6.0.3",
"sebastian/version": "^6.0.0",
"staabm/side-effects-detector": "^1.0.5"
},
@@ -8854,7 +8852,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.29"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.11"
},
"funding": [
{
@@ -8862,7 +8860,7 @@
"type": "other"
}
],
- "time": "2026-06-04T06:14:42+00:00"
+ "time": "2026-02-10T12:32:02+00:00"
},
{
"name": "sebastian/cli-parser",
diff --git a/config/laravel-usp-theme.php b/config/laravel-usp-theme.php
index 2d3d6c6..19b31c1 100644
--- a/config/laravel-usp-theme.php
+++ b/config/laravel-usp-theme.php
@@ -1,59 +1,59 @@
'Minha Conta (trocar senha da rede)',
- 'url' => 'ldapusers/my',
- 'can' => 'user',
- ],
- [
- 'key' => 'solicitaContaAdmin', # menu dinâmico solicita conta admin
- ],
- [
- 'text' => 'Usuários Ldap',
- 'url' => 'ldapusers',
- 'can' => 'manager',
- ],
- [
- 'text' => 'Criar usuário',
- 'url' => 'ldapusers/create',
- 'can' => 'manager',
- ]
+ [
+ 'text' => 'Minha Conta (trocar senha da rede)',
+ 'url' => 'ldapusers/my',
+ 'can' => 'user',
+ ],
+ [
+ 'key' => 'solicitaContaAdmin', # menu dinâmico solicita conta admin
+ ],
+ [
+ 'text' => 'Usuários Ldap',
+ 'url' => 'ldapusers',
+ 'can' => 'manager',
+ ],
+ [
+ 'text' => 'Criar usuário',
+ 'url' => 'ldapusers/create',
+ 'can' => 'manager',
+ ]
];
$right_menu = [
- [
- 'key' => 'web-ldap-admin',
- ],
- [
- 'key' => 'senhaunica-socialite',
- ],
- [
- 'text' => ' Sincronizar ' . env('LDAP_OU_DEFAULT'),
- 'title' => 'Configurações',
- 'url' => 'configs',
- 'align' => 'right',
- 'can' => 'admin',
- ],
+ [
+ 'key' => 'web-ldap-admin',
+ ],
+ [
+ 'key' => 'senhaunica-socialite',
+ ],
+ [
+ 'text' => ' Sincronizar ' . env('LDAP_OU_DEFAULT'),
+ 'title' => 'Configurações',
+ 'url' => 'configs',
+ 'align' => 'right',
+ 'can' => 'admin',
+ ],
];
return [
- 'title' => config('app.name'),
+ 'title' => config('app.name'),
- # USP_THEME_SKIN deve ser colocado no .env da aplicação
- 'skin' => env('USP_THEME_SKIN', 'uspdev'),
+ # USP_THEME_SKIN deve ser colocado no .env da aplicação
+ 'skin' => env('USP_THEME_SKIN', 'uspdev'),
- # chave da sessão. Troque em caso de colisão com outra variável de sessão.
- 'session_key' => 'laravel-usp-theme',
+ # chave da sessão. Troque em caso de colisão com outra variável de sessão.
+ 'session_key' => 'laravel-usp-theme',
- # usado na tag base, permite usar caminhos relativos nos menus e demais elementos html
- # na versão 1 era dashboard_url
- 'app_url' => config('app.url'),
+ # usado na tag base, permite usar caminhos relativos nos menus e demais elementos html
+ # na versão 1 era dashboard_url
+ 'app_url' => config('app.url'),
- # login e logout
- 'logout_method' => 'POST',
- 'logout_url' => 'logout',
- 'login_url' => 'login',
- 'menu' => $menu,
- 'right_menu' => $right_menu,
+ # login e logout
+ 'logout_method' => 'POST',
+ 'logout_url' => 'logout',
+ 'login_url' => 'login',
+ 'menu' => $menu,
+ 'right_menu' => $right_menu,
];