Trigger Laravel 5.4 reset password programatically from controller - laravel-5.4

I need to use Laravel's out-of-the-box reset password functionality through another function in my API controller.

Use the ResetPasswords trait in your controller.
class ApiController extends Controller
{
use \Illuminate\Foundation\Auth\ResetsPasswords;
public function doSomething(Request $request) {
...
$this->broker()->sendResetLink(['email' => 'youremail#yourdomain.com']);
}
}

Related

how to use dynemodb with lumen or laravel

I want to use dynemodb and mysql both with lumen.
I have follow below steps,
https://github.com/aws/aws-sdk-php-laravel
from above url I have add package for aws sdk for lumen
and add my accesskey and secret key in .env file
in bootstrap/app.php
I have add $app->register(Aws\Laravel\AwsServiceProvider::class);
Now I want to use dynemodb with lumen to execute query
for execute dynemodb query same as eloquent I have used below package.
https://github.com/baopham/laravel-dynamodb
now I have write my code in model as below,
<?php
namespace App\Models;
use BaoPham\DynamoDb\Facades\DynamoDb;
use BaoPham\DynamoDb\DynamoDbModel;
class CategoryMaster extends BaoPham\DynamoDb\DynamoDbModel
{
protected $table = 'category_master';
protected $fillable = ['id', 'category_name'];
public static function listname()
{
$model = DynamoDbModel::where(['category_name' => 'blue']);
$query = $model->get();
echo"<pre>";print_r($query);die;
}
}
it gives me arror like below,
FatalErrorException in CategoryMaster.php line 8:
Class 'App\Models\BaoPham\DynamoDb\DynamoDbModel' not found
can you help me to resolve thais issue to use dynemodb
I implemented dynamodb in laravel project using baopham package.
In .env file define dynamodb credentials
DYNAMODB_CONNECTION=aws
DYNAMODB_KEY=***
DYNAMODB_SECRET=****
DYNAMODB_REGION=us-east-1
In Model file
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends \BaoPham\DynamoDb\DynamoDbModel
{
protected $table = 'Users'; //table name
protected $guarded = [];
}
In controller file
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User; //include your model file
class UserController extends Controller
{
public function index()
{
$user = User::all(); // to get all data from user table
return view('products.index')->with('user', $user);
}
}
for more referance refer https://github.com/baopham/laravel-dynamodb query section.
I found my solution,
I have followed below site step by step and I am able to connect to dynemo db with lumen and able to fire eloquent queries
https://github.com/aws/aws-sdk-php-laravel
https://github.com/baopham/laravel-dynamodb
https://github.com/laravelista/lumen-vendor-publish

Laravel 5.4: attach custom service provider to a controller

I created a service provider named AdminServiceProvider
namespace App\Providers;
use Modules\Orders\Models\Orders;
use Illuminate\Support\ServiceProvider;
use View;
class AdminServiceProvider extends ServiceProvider
{
public function boot()
{
$comments = Orders::get_new_comments();
View::share('comments', $comments);
}
public function register()
{
}
}
Registered the provider
App\Providers\AdminServiceProvider::class,
Now I try to attach it to the controller
namespace App\Http\Controllers\admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Providers\AdminServiceProvider;
class AdminController extends Controller
{
public $lang;
public function __construct()
{
}
public function index(){
return view('admin/dashboard');
}
}
Now I get this error message
Undefined variable: comments
This is the first time I try to use a custom service provider and don't know exactly how it works I'm sure there's something missing Hope you can help. Thanks in advance.
[UPDATE]
removed use App\Providers\AdminServiceProvider; from the controller
php artisan clear-compiled solved the problem but I want to attach it to some controllers not all controllers as the $comments are sent to all contollers in my app. So how to attach the service provider to specific controllers not all of them?
For the undefined variable run: php artisan clear-compiled will solve it
If you want to share a variable in some of your views you can create a middleware and assign it to the views you want to share the data with:
First create a middleware: php artisan make:middleware someName
Then in the handle function you add your view sharing logic:
$comments = Orders::get_new_comments();
view()->share('comments',$comments);
return $next($request);
Then register your middleware under the $routeMiddleware array and
give it an alias.
Then attach it to your routes like:
Route::group(['middleware'=> 'yourMiddlewwareName'], function(){
//your routes
});
If you have all your admin views in one directory (views\admin for example) you can use view composer in AdminServiceProvider:
public function boot()
{
view()->composer('admin.*', function($view){
$view->with('comments', Orders::get_new_comments());
});
}
It will attach comments variable to each view in your views\admin directory.
You can also attach a variable to some specific views or folders like this:
view()->composer(['admin.posts.*', 'admin.pages.index'], function($view){
$view->with('comments', Orders::get_new_comments());
});

Laravel 5.2 use custom Controller Trait

I want to use my custom Trait stored in app directory into my controller. However I always get this message:
Trait 'app\MessageTrait' not found
My Controller:
namespace app\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use app\Http\Requests;
use app\User;
use app\MessageTrait;
class login extends Controller{
use MessageTrait;
public function index(Request $request){
return back();
}
}
My MessageTrait is contained within MessageTrait.php, located in app directory. Code looks like this:
My Trait:
trait MessageTrait{
public function success(){
return 'success';
}
public function error($message){
return 'error';
}
}
First I thought it may be a Namespace issue - however, User class could be found using same namespacing as my MessageTrait. Any ideas?
I solved this by adding namespace app to the top line of my Trait file. Everything works as expected now!

Cakephp3 Auth - allow some controllers to work without authoriziation

Today i wanted to use Cakephp3 auth component.
I have studies cakephp3 blog tutorial and auth documentation.
I have followed Blog tutorial, and for now everything works fine, like login,logout etc...
I wanted to have UsersController to be protected and used only when i will logged in.
And this is ok, but now i saw that i need to login to other controllers actions, for example i have PagesController, which should be public.
I found this in docs:
// Allow only the view and index actions.
$this->Auth->allow(['view', 'index']);
But i have a lot of actions, and listing actions in this function may be problematic.
My question is: How can i globally set all actions of UsersController to be protected, and all the rest of controllers to be public ?
Thank You.
For UsersController
class UsersController extends AppController
{
public function beforeFilter(Event $event)
{
// allow only login, forgotpassword
$this->Auth->allow(['login', 'forgotpassword']);
}
}
For Other controller. (Example: PagesController)
class PagesController extends AppController
{
public function beforeFilter(Event $event)
{
// allow all action
$this->Auth->allow();
}
}
In your appsController, you can add below code. You must add all the view names in $this->Auth->allow('ViewName').
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
// Allow users to register and logout.
// You should not add the "login" action to allow list. Doing so would
// cause problems with normal functioning of AuthComponent.
$this->Auth->allow(['Index', 'View', 'Edit', 'CustomViewName']); // NOTE: DO NOT ADD VIEWS THAT ARE USED BY YOUR USERSCONTROLLER.
}
And from UsersController, you can remove $this->Auth->allow(['add', 'logout']);. This is how I would do it.
I think you can use ControllerAuthorize.It will allows you to handle authorization checks in a controller callback.Add this setting in your app component.
$this->loadComponent('Auth', [
'authorize' => 'Controller',
]);
Then you can prevent or allow access by isAuthorized()
example :
public function isAuthorized($user) {
if ( isset($user['role']) == 'yourRole' ) {
return TRUE;
}
else {
header("location: Router::url('/', true)");
exit();
}
}
For details
cake doc
Try:
$this->Auth->deny(['controllers name that you want to authorize']);

Display function in header.tpl - Prestashop

I would like to say that i am quite new to prestashop.
I have added FrontController.php to override/classes/controller.
The file contains the following code
class FrontControllerCore extends Controller
{
public function thefunct()
{
return 'AA';
}
}
Now in the header.tpl i try to call the function by using {FrontController::thefunct()}.
When I put the public function in classes/controller it works, but when I put it in the override folder it doesn't.
How do I display the function in my header.tpl?
And how does the override folder work then?
(I assume you use ps 1.5)
If you are overriding FrontController you need to initiate your class like so
class FrontController extends FrontControllerCore
and delete cache/class_index.php file, (I mean, delete it everytime you override new controller or class)
Teach yourself how to override in ps. through excellent docs.
EDIT:
class FrontController extends FrontControllerCore {
//here you should create and assign variables which you want to use in templates
public function initContent()
{
parent::initContent();
//in such a way you assign variables into smarty template
$this->context->smarty->assign(
array(
'acme_variable' => $this->acme()
)
);
}
protected function acme()
{
return "Wile E. Coyote and The Road Runner";
}
}
//header.tpl
<div>{$acme_variable}</div>