Add Optional Two-Factor Authentication (2FA) for User Accounts
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- ruby
- Domínio
- authentication, database, frontend, security
Direção de pesquisa
Comece localizando as configurações de conta existentes, o fluxo de autenticação e a tabela de usuários descritos na issue. Analise como rotp e rqrcode se encaixariam nesses pontos de entrada e, em seguida, verifique se a 2FA opcional, o login com TOTP, os secrets seguros e a recuperação por códigos de backup atendem aos critérios de aceitação listados.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
To improve account security, we should add optional two-factor authentication (2FA) for users. This will allow users to enable 2FA via TOTP (e.g., Google Authenticator, Authy) in their account settings, but not require it for all users.
Requirements:
- Users can enable or disable 2FA from their account settings.
- When enabled, users must scan a QR code with an authenticator app to set up 2FA.
- On login, if 2FA is enabled, users must enter a valid TOTP code after password authentication.
- Users should be able to generate and view backup codes for account recovery.
- Store TOTP secrets and backup codes securely.
- UI/UX for enabling/disabling 2FA, entering codes, and managing backup codes.
Technical Notes:
- Use the rotp gem for TOTP generation/validation.
- Use the rqrcode gem to generate QR codes.
- Add otp_secret and otp_backup_codes columns to the users table.
- Update authentication flow to require TOTP code if 2FA is enabled.
Acceptance Criteria:
- Users can opt in/out of 2FA.
- 2FA is enforced only for users who have enabled it.
- Backup codes are available and can be regenerated.
- All sensitive data is handled securely.
- Linguagem predominante
- Ruby
- Estrelas
- 16
- Forks
- 11
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de rubyforgood/skillrx
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
rubyforgood/skillrx#736 ·
-
Discrepancies between SkillRx and AzureTalvez livre de novo @dcollie2 assumiu há 66 dias e não há nenhum pull request aberto. Aberta
rubyforgood/skillrx#734 · 2 responsáveis ·
-
Requirements Incomplete
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 66/100
rubyforgood/skillrx#700 ·
-
Topics UI TweaksTalvez já em andamento @LucassF5 assumiu há 131 dias. Abertaenhancement good first issue User Interface
rubyforgood/skillrx#699 · 2 comentários · 1 responsável ·
-
bug User Interface
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 55/100
rubyforgood/skillrx#606 ·
Todas as issues de rubyforgood/skillrx
Issues semelhantes
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
alphagov/tech-docs-gem#580 ·
Mantenedores costumam responder em até 1 dia
-
Onboarding form: instructor radio never pre-selected "Yes" (permission vs permissions typo)Talvez já em andamento @ThakuraAnki assumiu hoje. Abertabug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
WikiEducationFoundation/WikiEduDashboard#7235 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
zerocracy/judges-action#3021 ·
Mantenedores costumam responder em até 2 dias
-
Missing de translation: components/common/CommunitySolution.tsx:communitySolution.passesLatestTestsAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 63/100
hitobito/hitobito_bdp#58 ·