Logowanie na podstawie kodu, a nie usera i hasła

Cześć,
Poradźcie jak zrobić coś takiego.
User nie ma nazwy użytkownika, tylko dostaje kod w rodzaju “4f5e6kz5”.
W bazie trzymam jego nazwisko, imię i ten kod.
Na powitanie w systemie pokazuję formularz tylko do wpisania tego kodu.
Jak ktoś wpisze kod przypisany do któregoś usera to go wpuszcza i identyfikuje go jako ten user.

Do tego potrzebuję jakoś zalogować się jako admin do rails_admin.

Z góry dzięki za radę.

Wystarczy, że ukryjesz pole ‘password’ i będziesz wyszukiwał użytkownika tylko po ‘username’.

Z czym dokładnie sobie nie radzisz? Ciężko pomóc, gdy nie ma zdefiniowanego problemu.

Użyć jakiegoś gema do autoryzacji? Jeśli tak, to którego i gdzie grzebać aby wyszukiwał po username i olewał password?

Rozumiem, że to nie będzie aplikacja produkcyjna tylko jakiś ćwiczebno-szkoleniowy projekt, tak?

Ja napisałbym obsługę samemu. Jeden formularz do logowania; akcja, która odnajduje użytkownika w bazie i ustawia sesję i skończone.

Spróbuj z rozwiązaniem z Railscasts. Usuń tylko rzeczy związane z password i zmień email na to czego potrzebujesz.

Generalnie upewnij się że kod jest odpowiednio długi (minimum 16 znaków) i będziesz musiał wbudować jakieś flood detection/throtling (np. 1 putanie o kod na sekundę na serwer + 1 pytanie o kod na 10 sekund na IP, rosnące co każde zapytanie).

Generalnie większość gemów typu https://github.com/plataformatec/devise#configuring-controllers pozwala na stawienie/zalogowanie użytkownika,

class Admins::SessionsController < Devise::SessionsController
  def create
    unless throthle_request
      self.current_user = User.where(code: params[:code]).first
    end
  end
end

Aplikacja będzie produkcyjna, ale nie ma “w środku” nic istotnego. Po prostu trzy ankiety do wypełnienia. Znacznie prościej jest komuś podać kod niż usera i hasło. 16 znaków odpada, bo kod będzie przekazywany na papierze.
Dzięki za porady. Muszę się teraz jakoś przegryźć.