2016-12-30 2 views
1

Я хочу создать отдельную папку для каждого пользователя, когда они регистрируются и регистрируют их после создания папки. Я не знаю, как это сделать. Я попробовал что-то, что создает папку, но перенаправляет на ту же страницу регистрации, что почта уже существует. (I.e создает папку и регистрирует пользователя в БД, но вместо входа в нее пытается снова зарегистрировать пользователя).Как создать папку, когда пользователь регистрируется и регистрируется в нем после регистрации в laravel?

protected function create(array $data) 
{ 
    User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

     return \Storage::makeDirectory($data['name']); 
     //The above creates folder. 


} 

Я знаю, что я должен вернуть пользователя для входа. Я не знаю, как сделать это вместе.

+0

место код, который я дал в ответ, и дайте мне знать – msonowal

ответ

1

Просто создайте папку, а затем вернуть созданный экземпляр пользователя, как это делает Laravel:

protected function create(array $data) 
{ 
    $user = User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

    \Storage::makeDirectory($data['name']); 

    return $user; 
} 
+1

точно я сделал это сейчас, и он работает, и я собирался ответить на мой вопрос. спасибо –

0
protected function create(array $data) 
{ 
    $user = User::create([ 
       'name' => $data['name'], 
       'email' => $data['email'], 
       'password' => bcrypt($data['password']), 
      ]); 
    auth('your-guard-name')->login($user); 
    //this logs the user into the application 

    return \Storage::makeDirectory($data['name']); 
    //The above creates folder. 


} 
+0

когда я зарегистрироваться, я получаю эта ошибка Аргумент 1 передан Illuminate \ Auth \ SessionGuard :: login() должен реализовать интерфейс Illuminate \ Contracts \ Auth \ Authenticatable, boolean given, вызываемый в C: \ xampp \ htdocs \ laravel-projects \ ctohire \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Auth \ RegistersUsers.php в строке 63 и определяется. Но он создает папку и регистрируется, когда я перезагружаю страницу с ошибкой. –

0

Прежде всего, я не думаю, что создание новой папки для каждого пользователя является хорошей практикой. Если вы хотите хранить связанные с пользователем материалы и идентифицировать их, вы можете сопоставить file_name с номером user_id или добавить некоторую идентификацию user_id в имя_файла. Однако в вашем сценарии, пожалуйста, попробуйте следующий код.

protected function create(array $data) 
{ 

//create user and store it in variable called user 
$user = User::create([ 
    'name' => $data['name'], 
    'email' => $data['email'], 
    'password' => bcrypt($data['password']), 
]); 

//make the folder with user_id, since the duplication can happen in name. Here the path is defined and the folder name is created with user id and the folder permission 755 is given 
$makeDir = File::makeDirectory('/path/to/directory/'.$user->id , 0775); 

//Then auth login user 
Auth::login($user); 

//Then return to dashboard or new view. 
return redirect('/dashboard'); 

} 
Смежные вопросы