Skip to content

Commit a469d6b

Browse files
Merge pull request #139 from alecostaweb/issue_138
Informando a complexidade de senha
2 parents 0b12b3a + 67e32ad commit a469d6b

File tree

6 files changed

+72
-18
lines changed

6 files changed

+72
-18
lines changed

.env.example

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,16 @@ EXPIRAR_EM=0
149149
# Valores: employeeNumber, username (default)
150150
CAMPO_CODPES=username
151151

152-
# Tipo de senha gerada automaticamente
152+
# Tipo de senha gerada automaticamente, mas depende também da configuração de complexidade de senha do servidor AD
153153
# data_nascimento (default) - mas quando a pessoa não tem vinculo e pode logar e sincroniza no login, a conta é criada com senha random,
154154
# para usar data de nascimento deve-se alterar a GPO padrão desabilitando a complexidade de senha no Active Directory
155155
# random - atende à politica de senha forte do AD
156156
SENHA_PADRAO=data_nascimento
157157

158+
# Complexidade de senha de acordo com o servidor AD
159+
SENHA_COMPLEXIDADE='Mínimo de 8 caracteres.,Letras e números.,Ao menos um caracter especial.'
160+
# SENHA_COMPLEXIDADE='Não conter o nome da conta do usuário ou partes do nome completo do usuário que excedam dois caracteres consecutivos.,Ter pelo menos 8 caracteres de comprimento.,Conter caracteres de três das quatro categorias a seguir:, - Caracteres maiúsculos (A a Z)., - Caracteres minúsculos(a a z)., - Dígitos (0 a 9)., - Caracteres não alfabéticos (por exemplo: ! $ # %).'
161+
158162
# WSFOTO
159163
# 0 não mostra foto (nem foto fake), 1 mostra foto
160164
MOSTRAR_FOTO=0
@@ -170,6 +174,9 @@ WSFOTO_PASS=
170174
# algum problema na biblioteca. Ative o debug para ver os erros.
171175
# WSFOTO_DEBUG=0
172176

177+
# Caminho para o arquivo de imagem desejada para ser utilizada como a foto fake
178+
# WS_FOTO_FAKE_PATH=../storage/app/fotoFake.png
179+
173180
# Forçar trocar senha no pŕoximo login do windows
174181
# se o login com AD é usado em outros sistemas, como aplicações web
175182
# ou em terminais com linux deixar essa opção como 0 (falsa)
@@ -184,8 +191,12 @@ TIPO_NOMES_GRUPOS='extenso'
184191

185192
# No login ou na sincronização remover todos grupos, excetos
186193
# os que estão em notRemoveGroups.
187-
# 0 - não remover todos grupo, 1 - remover todos grupos
188-
REMOVE_ALL_GROUPS=0
194+
# no - não remover todos grupo, yes - remover todos grupos
195+
REMOVE_ALL_GROUPS=no
196+
197+
# Sincronizar grupos com replicado
198+
# no - não sincroniza grupos ; yes - sincroniza grupos
199+
SYNC_GROUPS_WITH_REPLICADO=yes
189200

190201
# Arquivo com o JSON de Curso Graduação x Habilitação x Setor
191202
# Este arquivo é uma alternativa ao método uspdev/replicado Pessoa::setorAluno

app/Http/Controllers/LdapUserController.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,15 @@ public function store(Request $request)
130130
'email' => ['required', 'email', new LdapEmailRule],
131131
]);
132132

133+
$grupos = [$request->grupos, 'NAOREPLICADO'];
134+
133135
LdapUser::createOrUpdate($request->username, [
134-
'nome' => $request->nome,
135-
'email' => $request->email,
136-
'setor' => 'NAOREPLICADO',
137-
],
138-
[$request->grupo, 'NAOREPLICADO']);
136+
'nome' => $request->nome,
137+
'email' => $request->email,
138+
'setor' => 'NAOREPLICADO',
139+
],
140+
$grupos
141+
);
139142

140143
$request->session()->flash('alert-success', 'Usuário cadastrado com sucesso!');
141144
return redirect("ldapusers/{$request->username}");

app/Ldap/Group.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ public static function createOrUpdate(string $name)
1717
$group->setName($name);
1818
// vamos prefixar o nome do grupo de forma a não conflitar
1919
$group->setAttribute('sAMAccountName', 'GRUPO-' . $name);
20-
20+
2121
# Deixando essa linha temporariamente desativada pois está gerando o erro no login:
2222
# ldap_modify_batch(): Batch Modify: Invalid DN syntax at
2323
#$group->setAttribute('info', 'Criado por web-ldap-admin em ' . now()->format('d/m/Y H:i:s'));
24-
24+
2525
$group->save();
2626

2727
// Move o grupo para a OU padrão somente se ela existir,
@@ -30,7 +30,7 @@ public static function createOrUpdate(string $name)
3030
if(config('web-ldap-admin.ouDefault') != ''){
3131
$group->move(Adldap::search()->ous()->find(config('web-ldap-admin.ouDefault')));
3232
}
33-
33+
3434
}
3535

3636
return $group;
@@ -53,7 +53,7 @@ public static function addMember(LdapUser $user, array $groups)
5353

5454
if (config('web-ldap-admin.removeAllGroups') == 'yes') {
5555
$user->removeAllGroups();
56-
}
56+
}
5757

5858
//remove posições vazias, repetidas e sujas
5959
$groups = array_map('trim', $groups);
@@ -68,7 +68,7 @@ public static function addMember(LdapUser $user, array $groups)
6868

6969
public static function listaGrupos()
7070
{
71-
// Nota: não encontrei nada que me permissite distinguir grupo do default do sistema ou não
71+
// Nota: não encontrei nada que me permitisse distinguir grupo do default do sistema ou não
7272
// assim, por hora, vou assumir que os grupos criado pelo laravel estão sem descrição
7373
// adicionando iscriticalsystemobject como filtro. Melhora mas não limpa todos (Masaki)
7474
$r = [];

config/web-ldap-admin.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@
5151
# data_nascimento, random
5252
'senhaPadrao' => env('SENHA_PADRAO','data_nascimento'),
5353

54+
# Complexidade de senha
55+
'senhaComplexidade' => env('SENHA_COMPLEXIDADE', 'Mínimo de 8 caracteres.,Letras e números.,Ao menos um caracter especial.'),
56+
5457
# Forçar trocar senha no pŕoximo login do windows
5558
# se o login com AD é usado em outros sistemas, como aplicações web
5659
# ou em terminais com linux deixar essa opção como 0 (falsa)

resources/views/ldapusers/partials/create-form.blade.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,26 @@
1515
</div>
1616

1717
<div class="form-group">
18-
<label for="GRUPO">Grupo</label>
19-
<input type="text" class="form-control" name="grupo" value="{{ old('grupo') }}" >
18+
<label for="GRUPO">Grupo(s)</label>
19+
<select class="select2 form-control" id="grupos" name="grupos[]" multiple="multiple">
20+
@foreach (\App\Ldap\Group::listaGrupos() as $grupo)
21+
<option value="{{ $grupo }}">{{ $grupo }}</option>
22+
@endforeach
23+
</select>
2024
</div>
2125

2226
<div class="form-group">
2327
<input type="submit" class="btn btn-primary" value="Enviar Dados">
2428
</div>
29+
30+
@section('javascripts_bottom')
31+
@parent
32+
<script type="text/javascript">
33+
$(document).ready(function() {
34+
$("#grupos").select2 ({
35+
placeholder: "Selecione o(s) grupo(s) ou digite o(s) nome(s) de novo(s) grupo(s)",
36+
tags: true /* Aceita novas opções, ou seja, se o grupo não está na lista, será criado */
37+
});
38+
})
39+
</script>
40+
@endsection

resources/views/ldapusers/partials/show-pwd-form.blade.php

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,25 @@
77
@csrf
88
@method('patch')
99

10+
<span style="color: red;">
11+
@php
12+
$complexidade = explode(',', config('web-ldap-admin.senhaComplexidade'));
13+
foreach ($complexidade as $regra) {
14+
echo "$regra<br />";
15+
}
16+
@endphp
17+
</span>
18+
1019
<div class="form-group">
1120
<label for="usr"> Nova senha:</label>
12-
<input type="password" class="form-control" name="senha">
13-
<i> Mínimo de 8 caracteres. </i>
21+
<input type="password" class="form-control" name="senha" id="senha" placeholder="Digite a nova senha">
22+
<input type="checkbox" onclick="mostrarSenha('senha')"> Mostrar senha
1423
</div>
1524

1625
<div class="form-group">
1726
<label for="usr"> Repetir Nova senha:</label>
18-
<input type="password" class="form-control" name="senha_confirmation">
27+
<input type="password" class="form-control" name="senha_confirmation" id="senha_confirmation" placeholder="Repita a nova senha">
28+
<input type="checkbox" onclick="mostrarSenha('senha_confirmation')"> Mostrar senha
1929
</div>
2030

2131
@if (Gate::check('gerente'))
@@ -31,3 +41,14 @@
3141
</form>
3242
</div>
3343
</div>
44+
45+
<script>
46+
function mostrarSenha(field) {
47+
var x = document.getElementById(field);
48+
if (x.type === "password") {
49+
x.type = "text";
50+
} else {
51+
x.type = "password";
52+
}
53+
}
54+
</script>

0 commit comments

Comments
 (0)