パスワード再発行依頼

このコミットが含まれているのは:
守矢諏訪子 2021-10-29 10:36:05 +09:00
コミット 992390fa78
3個のファイルの変更96行の追加5行の削除

ファイルの表示

@ -112,8 +112,56 @@ class ChildrenController extends Controller {
// 本登録に成功
return ['status_code' => 200, 'success_messages' => ['本登録に成功しました。'], 'params' => ['tel' => $r->tel, 'password' => $password]];
}
public function requestPassword () {}
public function requestPassword (Request $r) {
$validate = Validator::make($r->all(), [
'tel' => 'required|numeric|digits_between:0,99999999999|starts_with:0',
]);
if ($validate->fails()) {
// バリデーションエラー
return ['status_code' => 422, 'error_messages' => $validate->errors()];
}
if ($result = Child::select('id')->where('tel', $r->tel)->first()) {
// メールアドレス照合に失敗
return ['status_code' => 400, 'error_messages' => ['電話番号が未登録です。入力した情報を確認してください。']];
}
$token = bin2hex(random_bytes(16));
$create = [
'type' => 1,
'child_id' => $result->id,
'tel' => $r->tel,
'token' => $token,
'ttl' => date('Y-m-d H:i:s', time()+28800)
];
try {
// DBに入ります。
TelActivation::create($create);
// SMSを送ります。
// TODO
// SMSの送信に失敗
// [
// 'status_code' => 401,
// 'error_messages' => ['SMSの送信に失敗しました。電話番号が使用できるか確認してださい。'],
// ]
} catch (\Throwable $e) {
// 失敗
Log::critical($e->getMessage());
return ['status_code' => 400, 'error_messages' => '電話番号が未登録です。入力した情報を確認してください。'];
}
$params = [
'id' => $result->id,
'tel' => $r->tel,
];
// メールアドレス照合に成功
return ['status_code' => 200, 'params' => $params, 'success_messages' => ['再発行用パスワードの送信に成功しました。']];
}
public function search (Request $r) {
if (!isset($r->keyword)) {

ファイルの表示

@ -27,7 +27,50 @@ class FathersController extends Controller {
return new \App\Models\Father();
}
public function requestPassword () {}
public function requestPassword (Request $r) {
$validate = Validator::make($r->all(), [
'email' => 'required|max:255|email'
]);
if ($validate->fails()) {
// バリデーションエラー
return ['status_code' => 422, 'error_messages' => $validate->errors()];
}
if ($result = Father::select('id')->where('email', $r->email)->first()) {
// メールアドレス照合に失敗
return ['status_code' => 400, 'error_messages' => ['メールアドレスが未登録です。入力した情報を確認してください。']];
}
$token = bin2hex(random_bytes(16));
$create = [
'type' => 1,
'father_id' => $result->id,
'email' => $r->email,
'token' => $token,
'ttl' => date('Y-m-d H:i:s', time()+28800)
];
try {
// DBに入ります。
EmailActivation::create($create);
// メールを送ります。
Mail::to($r->email)->send(new FathersRegistrationTemporaryMail($token));
} catch (\Throwable $e) {
// 失敗
Log::critical($e->getMessage());
return ['status_code' => 400, 'error_messages' => 'メールアドレスが未登録です。入力した情報を確認してください。'];
}
$params = [
'id' => $result->id,
'email' => $r->email,
];
// メールアドレス照合に成功
return ['status_code' => 200, 'params' => $params, 'success_messages' => ['再発行用パスワードの送信に成功しました。']];
}
public function registerTemporary (Request $r) {
$validate = Validator::make($r->all(), [

ファイルの表示

@ -135,8 +135,8 @@ Route::group(['prefix' => 'fathers'], function () {
Route::group(['prefix' => 'children'], function () {
Route::post('/registerTemporary', '\App\Http\Controllers\Api\ChildrenController@registerTemporary')->name('childrenregistertemporary');
Route::post('/registerMain', '\App\Http\Controllers\Api\ChildrenController@registerMain')->name('childrenregistermain');
// Route::post('/requestPassword', '\App\Http\Controllers\Api\ChildrenController@requestPassword')->name('childrenrequestpassword');
// Route::post('/login', '\App\Http\Controllers\Api\ChildrenController@login')->name('childrenlogin');
Route::post('/requestPassword', '\App\Http\Controllers\Api\ChildrenController@requestPassword')->name('childrenrequestpassword');
Route::post('/login', '\App\Http\Controllers\Api\ChildrenController@login')->name('childrenlogin');
Route::group(['middleware' => 'auth:children'], function () {
Route::get('/detail/{child_id}', '\App\Http\Controllers\Api\ChildrenController@detail');