mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 23:17:32 -05:00 
			
		
		
		
	Added users to the API
This commit is contained in:
		
							parent
							
								
									60a3f3ca28
								
							
						
					
					
						commit
						88b9046ac7
					
				
							
								
								
									
										76
									
								
								app/Http/Controllers/UserApiController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								app/Http/Controllers/UserApiController.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,76 @@
 | 
			
		||||
<?php namespace App\Http\Controllers;
 | 
			
		||||
 | 
			
		||||
use App\Services\UserService;
 | 
			
		||||
use App\Ninja\Repositories\UserRepository;
 | 
			
		||||
use App\Ninja\Transformers\UserTransformer;
 | 
			
		||||
use Auth;
 | 
			
		||||
use App\Models\User;
 | 
			
		||||
 | 
			
		||||
use App\Http\Requests\CreateUserRequest;
 | 
			
		||||
use App\Http\Requests\UpdateUserRequest;
 | 
			
		||||
 | 
			
		||||
class UserApiController extends BaseAPIController
 | 
			
		||||
{
 | 
			
		||||
    protected $userService;
 | 
			
		||||
    protected $userRepo;
 | 
			
		||||
 | 
			
		||||
    public function __construct(UserService $userService, UserRepository $userRepo)
 | 
			
		||||
    {
 | 
			
		||||
        parent::__construct();
 | 
			
		||||
 | 
			
		||||
        $this->userService = $userService;
 | 
			
		||||
        $this->userRepo = $userRepo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function index()
 | 
			
		||||
    {
 | 
			
		||||
        $user = Auth::user();
 | 
			
		||||
        $users = User::whereAccountId($user->account_id)->withTrashed();
 | 
			
		||||
        $users = $users->paginate();
 | 
			
		||||
 | 
			
		||||
        $paginator = User::whereAccountId($user->account_id)->withTrashed()->paginate();
 | 
			
		||||
 | 
			
		||||
        $transformer = new UserTransformer(Auth::user()->account, $this->serializer);
 | 
			
		||||
        $data = $this->createCollection($users, $transformer, 'users', $paginator);
 | 
			
		||||
 | 
			
		||||
        return $this->response($data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
    public function store(CreateUserRequest $request)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->save($request);
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
    
 | 
			
		||||
    public function update(UpdateUserRequest $request, $userPublicId)
 | 
			
		||||
    {
 | 
			
		||||
        /*
 | 
			
		||||
        // temporary fix for ids starting at 0
 | 
			
		||||
        $userPublicId -= 1;
 | 
			
		||||
        $user = User::scope($userPublicId)->firstOrFail();
 | 
			
		||||
        */
 | 
			
		||||
        $user = Auth::user();
 | 
			
		||||
 | 
			
		||||
        if ($request->action == ACTION_ARCHIVE) {
 | 
			
		||||
            $this->userRepo->archive($user);
 | 
			
		||||
 | 
			
		||||
            $transformer = new UserTransformer(Auth::user()->account, $request->serializer);
 | 
			
		||||
            $data = $this->createItem($user, $transformer, 'users');
 | 
			
		||||
 | 
			
		||||
            return $this->response($data);
 | 
			
		||||
        } else {
 | 
			
		||||
            return $this->save($request, $user);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function save($request, $user = false)
 | 
			
		||||
    {
 | 
			
		||||
        $user = $this->userRepo->save($request->input(), $user);
 | 
			
		||||
 | 
			
		||||
        $transformer = new UserTransformer(\Auth::user()->account, $request->serializer);
 | 
			
		||||
        $data = $this->createItem($user, $transformer, 'users');
 | 
			
		||||
 | 
			
		||||
        return $this->response($data);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										33
									
								
								app/Http/Requests/UpdateUserRequest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								app/Http/Requests/UpdateUserRequest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
<?php namespace app\Http\Requests;
 | 
			
		||||
 | 
			
		||||
use Auth;
 | 
			
		||||
use App\Http\Requests\Request;
 | 
			
		||||
use Illuminate\Validation\Factory;
 | 
			
		||||
 | 
			
		||||
class UpdateUserRequest extends Request
 | 
			
		||||
{
 | 
			
		||||
    // Expenses 
 | 
			
		||||
    /**
 | 
			
		||||
     * Determine if the user is authorized to make this request.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function authorize()
 | 
			
		||||
    {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the validation rules that apply to the request.
 | 
			
		||||
     *
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    public function rules()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            'email' => 'email|required|unique:users,email,' . Auth::user()->id . ',id',
 | 
			
		||||
            'first_name' => 'required',
 | 
			
		||||
            'last_name' => 'required',
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -235,6 +235,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function()
 | 
			
		||||
    Route::get('user_accounts', 'AccountApiController@getUserAccounts');
 | 
			
		||||
    Route::resource('products', 'ProductApiController');
 | 
			
		||||
    Route::resource('tax_rates', 'TaxRateApiController');
 | 
			
		||||
    Route::resource('users', 'UserApiController');
 | 
			
		||||
 | 
			
		||||
    // Vendor
 | 
			
		||||
    Route::resource('vendors', 'VendorApiController');
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,13 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
 | 
			
		||||
     *
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    protected $fillable = ['first_name', 'last_name', 'email', 'password'];
 | 
			
		||||
    protected $fillable = [
 | 
			
		||||
        'first_name',
 | 
			
		||||
        'last_name',
 | 
			
		||||
        'email',
 | 
			
		||||
        'password',
 | 
			
		||||
        'phone',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The attributes excluded from the model's JSON form.
 | 
			
		||||
@ -51,6 +57,11 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
 | 
			
		||||
        return $this->belongsTo('App\Models\Theme');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setEmailAttribute($value)
 | 
			
		||||
    {
 | 
			
		||||
        $this->attributes['email'] = $this->attributes['username'] = $value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getName()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->getDisplayName();
 | 
			
		||||
 | 
			
		||||
@ -26,4 +26,13 @@ class UserRepository extends BaseRepository
 | 
			
		||||
 | 
			
		||||
        return $query;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function save($data, $user)
 | 
			
		||||
    {
 | 
			
		||||
        $user->fill($data);
 | 
			
		||||
        $user->save();
 | 
			
		||||
 | 
			
		||||
        return $user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ class UserTransformer extends EntityTransformer
 | 
			
		||||
            'updated_at' => $this->getTimestamp($user->updated_at),
 | 
			
		||||
            'deleted_at' => $this->getTimestamp($user->deleted_at),
 | 
			
		||||
            'phone' => $user->phone,
 | 
			
		||||
            'username' => $user->username,
 | 
			
		||||
            //'username' => $user->username,
 | 
			
		||||
            'registered' => (bool) $user->registered,
 | 
			
		||||
            'confirmed' => (bool) $user->confirmed,
 | 
			
		||||
            'oauth_user_id' => $user->oauth_user_id,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user