Skip to content
Snippets Groups Projects
Select Git revision
  • d4479d9baa8e5383d16c19c34ef534a2c396cc12
  • master default protected
  • set-sast-config-1
  • 0.12.3
  • 0.12.2
  • 0.12.1
  • 0.12.0
  • 0.11.0
  • 0.10.1
  • 0.10.0
  • 0.9.0
  • 0.8.0
  • 0.7.0
  • 0.6.0
  • 0.5.0
  • 0.4.0
  • 0.3.1
  • 0.3.0
  • 0.2.0
  • 0.1.3
  • 0.1.2
  • 0.1.1
  • 0.1.0
23 results

setup.py

Blame
  • Forked from jvoisin / mat2
    Source project has a limited visibility.
    users_controller.rb NaN GiB
    module Api
      class UsersController < ApiController
        include ControllerExtension::FetchUser
    
        # allow optional access to this controller using API auth tokens:
        before_filter :token_authenticate
    
        before_filter :fetch_user, :only => [:update, :destroy]
        before_filter :require_monitor, :only => [:index, :show]
        before_filter :require_login, :only => [:index, :update, :destroy]
    
        respond_to :json
    
        # used for autocomplete for admins in the web ui
        def index
          if params[:query]
            @users = User.login_starts_with(params[:query])
            respond_with @users.map(&:login).sort
          else
            render :json => {'error' => 'query required', 'status' => :unprocessable_entity}
          end
        end
    
        def show
          if params[:login]
            @user = User.find_by_login(params[:login])
          elsif params[:id]
            @user = User.find(params[:id])
          end
          if @user
            respond_with user_response
          else
            not_found
          end
        end
    
        def create
          if current_user.is_monitor?
            create_test_account
          elsif APP_CONFIG[:allow_registration]
            create_account
          else
            head :forbidden
          end
        end
    
        def update
          if user_update_params.present?
            @user.account.update user_update_params
            respond_with @user
          else
            # TODO: move into identity controller
            key = update_pgp_key(user_key_param[:public_key])
            respond_with key
          end
        end
    
        def destroy
          @user.account.destroy(release_handles)
          if @user == current_user
            logout
          end
          render :json => {'success' => 'user deleted'}
        end
    
        private
    
        def user_response
          @user.to_hash.tap do |user_hash|
            if @user == current_user
              user_hash['is_admin'] = @user.is_admin?
            end
          end
        end
    
        def user_update_params
          params.require(:user).permit :login,
            :password_verifier,
            :password_salt,
            :recovery_code_verifier,
            :recovery_code_salt
        end
    
        def user_key_param
          params.require(:user).permit :public_key
        end
    
        def release_handles
          current_user.is_monitor? || params[:identities] == "destroy"
        end
    
        # tester auth can only create test users.
        def create_test_account
          if User::is_test?(params[:user][:login])
            @user = Account.create(params[:user], :invite_required => false)
            respond_with @user
          else
            head :forbidden
          end
        end
    
        def create_account
          if APP_CONFIG[:allow_registration]
            @user = Account.create(params[:user])
            respond_with @user # return ID instead?
          else
            head :forbidden
          end
        end
    
        def update_pgp_key(key)
          PgpKey.new(key).tap do |key|
            if key.valid?
              identity = Identity.for(@user)
              identity.set_key(:pgp, key.to_s)
              identity.save
            end
          end
        end
      end
    end