class Auth::Result attr_accessor :user, :name, :username, :email, :user, :email_valid, :extra_data, :awaiting_activation, :awaiting_approval, :authenticated, :authenticator_name, :requires_invite def session_data { email: email, username: username, email_valid: email_valid, name: name, authenticator_name: authenticator_name, extra_data: extra_data } end def to_client_hash if requires_invite { requires_invite: true } elsif user { authenticated: !!authenticated, awaiting_activation: !!awaiting_activation, awaiting_approval: !!awaiting_approval } else { email: email, name: User.suggest_name(name || username || email), username: UserNameSuggester.suggest(username || name || email), # this feels a tad wrong auth_provider: authenticator_name.capitalize, email_valid: !!email_valid } end end end