Portal de vagas: o endereço, a entrada do candidato por código e o envio do currículo

O ENDEREÇO QUE ABRE O PORTAL
O portal é identificado pelo endereço em que a página está aberta: o sistema compara esse endereço com o domínio próprio cadastrado (o endereço inteiro) e com o subdomínio (a primeira parte do endereço). Basta um dos dois bater — não há ordem de preferência. Se nenhum bater, a resposta é "Loja não encontrada.".

A PERSONALIZAÇÃO
Os campos de Configurações do portal são: nome, e-mail e telefone da loja (os três obrigatórios, e-mail válido), domínio próprio, subdomínio, cor de fundo e cor do texto (em hexadecimal), logo, favicon, redes sociais e os dados de divulgação (site, nome e logo). A lista é essa, fechada.
O subdomínio é conferido na hora: "Este subdomínio já está sendo usado." ou "está disponível.". É gravado em minúsculas.
Logo e favicon são reduzidos proporcionalmente para caber em 300x300 e 50x50 — sem corte e sem ampliar imagem menor que isso. Se a logo apareceu cortada, o corte veio do recorte feito no momento do envio, não do redimensionamento.

A ENTRADA DO CANDIDATO
Não há senha. O candidato pede um código de 6 dígitos por SMS ("Seu código de acesso é: ...") ou por e-mail, com o código no assunto e repetido no corpo da mensagem. O e-mail sai em nome da loja e a resposta volta para o e-mail da loja; nome, telefone, e-mail e logo da loja aparecem no topo da mensagem — por isso esses dados precisam estar certos.
No SMS, o destino precisa ser um celular (com o 9 na frente); número fixo é recusado com "Número de celular inválido.".
Cada celular e cada e-mail têm limite de pedidos por dia. Passando dele vem "Limite de tentativas diárias excedido" e só volta a funcionar no dia seguinte. Pedido que falhou no envio não entra nessa conta.
Validado o código, a sessão do candidato fica gravada em um cookie que vale 24 horas.

O CADASTRO E O CURRÍCULO
O currículo é anexado antes do cadastro e é obrigatório junto com nome, e-mail e celular: ninguém se candidata sem anexar currículo. O sistema não impõe formato nem tamanho de arquivo. Se o e-mail ou o celular já existirem, vem "Este e-mail já está cadastrado, faça login." — a mensagem cita e-mail mesmo quando o repetido foi o celular.
Na candidatura, o sucesso responde "Inscrição realizada com sucesso."; sem sessão válida, "Usuário não autenticado."; erro no processamento, "Falha ao realizar candidatura.".

O QUE COSTUMA DAR ERRADO
Falhas no envio por SMS: limite de tentativas diárias excedido; número de celular inválido; serviço de SMS não configurado; falha ao enviar SMS; serviço de SMS indisponível; falha ao enviar código. Na verificação do reCAPTCHA, as mensagens são "Falha ao validar reCAPTCHA." e "reCAPTCHA inválido.". No e-mail, a falha é "Falha ao enviar o código", seguida de um número de erro entre parênteses.
"Sumiu meu login": a sessão vive em um cookie de 24 horas, gravado como cookie de terceiros; navegador que bloqueia esse tipo de cookie também derruba o login.