module ApiBlocks::Doorkeeper::Invitations::Controller
Public Instance Methods
access_token(application, user)
click to toggle source
Returns a new access token for this user.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 83 def access_token(application, user) ::Doorkeeper::AccessToken.find_or_create_for( application, user.id, ::Doorkeeper.configuration.default_scopes, ::Doorkeeper.configuration.access_token_expires_in, true ) end
callback()
click to toggle source
Redirects to the application's redirect uri.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 41 def callback query = { invitation_token: params[:invitation_token] }.to_query redirect_to("#{oauth_application.invitation_uri}?#{query}") end
create()
click to toggle source
Initialize a new invitation.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 16 def create user = user_model.invite!( create_params, current_user, application: oauth_application ) return render(status: :no_content) if user.errors.empty? respond_with(user) end
create_params()
click to toggle source
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 64 def create_params params.require(:user).permit(:email) end
oauth_application()
click to toggle source
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 93 def oauth_application @oauth_application ||= ::Doorkeeper::Application.find_by!( uid: params[:client_id] ) end
show()
click to toggle source
Renders informations about the invited user.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 27 def show user = user_model.find_by_invitation_token(params[:invitation_token], false) if user.nil? || !user.persisted? return render( problem: { details: 'invalid invitation token' }, status: :bad_request ) end respond_with(user) end
unlockable?(resource)
click to toggle source
Copied over from devise base controller in order to determine wether a ser is unlockable or not.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 76 def unlockable?(resource) resource.respond_to?(:unlock_access!) && resource.respond_to?(:unlock_strategy_enabled?) && resource.unlock_strategy_enabled?(:email) end
update()
click to toggle source
Finalize the invitation.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 50 def update user = user_model.accept_invitation!(update_params) return respond_with(user) unless user.errors.empty? user.unlock_access! if unlockable?(user) respond_with(::Doorkeeper::OAuth::TokenResponse.new( access_token(oauth_application, user) ).body) end
update_params()
click to toggle source
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 68 def update_params params.require(:user).permit( :invitation_token, :password, :password_confirmation ) end
user_model()
click to toggle source
Returns the user model class.
# File lib/api_blocks/doorkeeper/invitations/controller.rb, line 100 def user_model raise 'the method `user_model` must be implemented on your invitations controller' end