]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/oauth_clients_controller.rb
Attempt to avoid polynomial time matches on user supplied data
[rails.git] / app / controllers / oauth_clients_controller.rb
index 00606c1ecb2e873018f031bd5ab31ae1746f4886..b925002ec7bed7278e19055c719c52092fec30d8 100644 (file)
@@ -1,12 +1,14 @@
 class OauthClientsController < ApplicationController
 class OauthClientsController < ApplicationController
-  layout 'site'
+  layout "site"
+
+  before_action :authorize_web
+  before_action :set_locale
+
+  authorize_resource :class => ClientApplication
 
 
-  before_filter :authorize_web
-  before_filter :require_user
-  
   def index
   def index
-    @client_applications = @user.client_applications
-    @tokens = @user.oauth_tokens.find :all, :conditions => 'oauth_tokens.invalidated_at is null and oauth_tokens.authorized_at is not null'
+    @client_applications = current_user.client_applications
+    @tokens = current_user.oauth_tokens.authorized
   end
 
   def new
   end
 
   def new
@@ -14,40 +16,55 @@ class OauthClientsController < ApplicationController
   end
 
   def create
   end
 
   def create
-    @client_application = @user.client_applications.build(params[:client_application])
+    @client_application = current_user.client_applications.build(application_params)
     if @client_application.save
     if @client_application.save
-      flash[:notice] = "Registered the information successfully"
+      flash[:notice] = t "oauth_clients.create.flash"
       redirect_to :action => "show", :id => @client_application.id
     else
       render :action => "new"
     end
   end
       redirect_to :action => "show", :id => @client_application.id
     else
       render :action => "new"
     end
   end
-  
+
   def show
   def show
-    @client_application = @user.client_applications.find(params[:id])
+    @client_application = current_user.client_applications.find(params[:id])
   rescue ActiveRecord::RecordNotFound
     @type = "client application"
     render :action => "not_found", :status => :not_found
   end
 
   def edit
   rescue ActiveRecord::RecordNotFound
     @type = "client application"
     render :action => "not_found", :status => :not_found
   end
 
   def edit
-    @client_application = @user.client_applications.find(params[:id])
+    @client_application = current_user.client_applications.find(params[:id])
+  rescue ActiveRecord::RecordNotFound
+    @type = "client application"
+    render :action => "not_found", :status => :not_found
   end
   end
-  
+
   def update
   def update
-    @client_application = @user.client_applications.find(params[:id])
-    if @client_application.update_attributes(params[:client_application])
-      flash[:notice] = "Updated the client information successfully"
+    @client_application = current_user.client_applications.find(params[:id])
+    if @client_application.update(application_params)
+      flash[:notice] = t "oauth_clients.update.flash"
       redirect_to :action => "show", :id => @client_application.id
     else
       render :action => "edit"
     end
       redirect_to :action => "show", :id => @client_application.id
     else
       render :action => "edit"
     end
+  rescue ActiveRecord::RecordNotFound
+    @type = "client application"
+    render :action => "not_found", :status => :not_found
   end
 
   def destroy
   end
 
   def destroy
-    @client_application = @user.client_applications.find(params[:id])
+    @client_application = current_user.client_applications.find(params[:id])
     @client_application.destroy
     @client_application.destroy
-    flash[:notice] = "Destroyed the client application registration"
+    flash[:notice] = t "oauth_clients.destroy.flash"
     redirect_to :action => "index"
     redirect_to :action => "index"
+  rescue ActiveRecord::RecordNotFound
+    @type = "client application"
+    render :action => "not_found", :status => :not_found
+  end
+
+  private
+
+  def application_params
+    params.require(:client_application).permit(:name, :url, :callback_url, :support_url, ClientApplication.all_permissions)
   end
 end
   end
 end