1+ //! Módulo com funções relacionadas ao cadastro de um aluno no sistema já tendo
2+ //! o username.
13use crate :: cadastro_aluno:: DadosParaCadastro ;
24use crate :: configuracao:: ConfiguracaoUsuario ;
35use crate :: ldap:: ErroLdap ;
@@ -8,11 +10,19 @@ use deunicode::deunicode;
810use ldap3:: { Ldap , Mod , Scope , SearchEntry , dn_escape} ;
911use secrecy:: ExposeSecret ;
1012
11- // TODO: documentar que é possível que uma race condition aconteça caso dois
12- // usuários disputem um mesmo username ao mesmo tempo, mas nesse caso, o LDAP
13- // retornará um erro, o que não é algo crítico, só seria necessário que o
14- // usuário tente novamente. Como é um caso extremamente excepcional, não acho
15- // que isso seja um problema.
13+ // TODO: embora o LDAP dê erro se tiver dois alunos com o msm nome, talvez n de
14+ // se tiver um aluno e professor, por exemplo. Isso deve ser verificado após a
15+ // adição e ela deve ser cancelada caso aconteça. Isso deve ser muito raro de
16+ // ocorrer, pois precisaria da adição simultanea, ou seja, provavelmente nunca
17+ // vai acontecer. Mas é bom ter algo para esse caso.
18+ /// Cadastra um usuário com os dados fornecidos, a partir da configuração base
19+ /// fornecida.
20+ ///
21+ /// # Errors
22+ ///
23+ /// - conflito de username, ou seja, já existir um aluno com o mesmo username;
24+ /// - erro de conexão do LDAP; ou
25+ /// - [DadosParaCadastro] não sanitizados.
1626pub async fn cadastrar_usuario (
1727 username : String ,
1828 dados : & DadosParaCadastro ,
@@ -27,6 +37,7 @@ pub async fn cadastrar_usuario(
2737 cfg : & ConfiguracaoUsuario ,
2838 ldap : & mut Ldap ,
2939 ) -> Result < ( ) , ErroLdap > {
40+ // TODO: remover coisas do samba
3041 let ( samba_uid, samba_rid) = samba_ids ( ldap) . await ?;
3142
3243 let dn = format ! (
0 commit comments