Skip to content
Snippets Groups Projects
Select Git revision
  • 28338e91c351bef21a856f4280b762b9ee0dc2aa
  • master default protected
  • systemd_integration
  • borg-sftp-support
  • nap-initial
  • mariaback_full-intial
  • move-mail-deps
  • borg-ssh-keygen
  • bugfix-borg-handler-create-options
  • borg-custom-init-options
  • 11293-partition_table_backup
  • debian
  • tests
  • stretch-backports
  • no_vservers
  • pristine-tar
  • upstream
  • backupninja_debian/1.1.0-1
  • backupninja_upstream/1.1.0
  • backupninja-1.1.0
  • backupninja_debian/1.0.2-1
  • backupninja_upstream/1.0.2
  • backupninja-1.0.2
  • backupninja_debian/1.0.1-2
  • backupninja_debian/1.0.1-1
  • backupninja_upstream/1.0.1
  • backupninja-1.0.1
  • backupninja_debian/1.0-1
  • backupninja_upstream/1.0
  • backupninja-1.0
  • backupninja_debian/1.0_rc1-1
  • backupninja_upstream/1.0_rc1
  • backupninja-1.0-rc1
  • backupninja_debian/0.9.10-2
  • backupninja_debian/0.9.10-1
  • backupninja_upstream/0.9.10
  • backupninja-0.9.10
37 results

mysql

Blame
  • Forked from Liberate / backupninja
    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