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::get('user_accounts', 'AccountApiController@getUserAccounts');
 | 
				
			||||||
    Route::resource('products', 'ProductApiController');
 | 
					    Route::resource('products', 'ProductApiController');
 | 
				
			||||||
    Route::resource('tax_rates', 'TaxRateApiController');
 | 
					    Route::resource('tax_rates', 'TaxRateApiController');
 | 
				
			||||||
 | 
					    Route::resource('users', 'UserApiController');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Vendor
 | 
					    // Vendor
 | 
				
			||||||
    Route::resource('vendors', 'VendorApiController');
 | 
					    Route::resource('vendors', 'VendorApiController');
 | 
				
			||||||
 | 
				
			|||||||
@ -29,7 +29,13 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @var array
 | 
					     * @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.
 | 
					     * 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');
 | 
					        return $this->belongsTo('App\Models\Theme');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function setEmailAttribute($value)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->attributes['email'] = $this->attributes['username'] = $value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getName()
 | 
					    public function getName()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->getDisplayName();
 | 
					        return $this->getDisplayName();
 | 
				
			||||||
 | 
				
			|||||||
@ -26,4 +26,13 @@ class UserRepository extends BaseRepository
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return $query;
 | 
					        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),
 | 
					            'updated_at' => $this->getTimestamp($user->updated_at),
 | 
				
			||||||
            'deleted_at' => $this->getTimestamp($user->deleted_at),
 | 
					            'deleted_at' => $this->getTimestamp($user->deleted_at),
 | 
				
			||||||
            'phone' => $user->phone,
 | 
					            'phone' => $user->phone,
 | 
				
			||||||
            'username' => $user->username,
 | 
					            //'username' => $user->username,
 | 
				
			||||||
            'registered' => (bool) $user->registered,
 | 
					            'registered' => (bool) $user->registered,
 | 
				
			||||||
            'confirmed' => (bool) $user->confirmed,
 | 
					            'confirmed' => (bool) $user->confirmed,
 | 
				
			||||||
            'oauth_user_id' => $user->oauth_user_id,
 | 
					            'oauth_user_id' => $user->oauth_user_id,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user