User registration.

このコミットが含まれているのは:
テクニカル諏訪子 2018-04-12 23:19:32 +09:00
コミット 009b79869a
1個のファイルの変更132行の追加78行の削除

ファイルの表示

@ -3,24 +3,15 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\User;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Validator;
use DB, Hash, Mail, Illuminate\Support\Facades\Password;
use Illuminate\Cookie\CookieJar;
use Symfony\Component\HttpFoundation\Cookie;
use App\Http\Controllers\PermissionController;
use Illuminate\Support\Facades\Log;
class AuthController extends Controller {
/**
* API Register
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
private $objPermission;
public function __construct() {
@ -206,54 +197,143 @@ class AuthController extends Controller {
}
public function register(Request $request) {
$credentials = $request->only('username', 'email', 'password');
$ip = $_SERVER['REMOTE_ADDR'];
$rules = [
'username' => 'required|max:255|unique:users',
'email' => 'required|email|max:255|unique:users',
];
// Anti-spam here.
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
$username = $request->username;
$email = $request->email;
$password = $request->password;
$country = $request->country;
$gender = $request->gender;
User::create([
'username' => $username,
'email' => $email,
'password' => Hash::make($password),
'country' => $country,
'gender' => $gender
]);
try {
// attempt to verify the credentials and create a token for the user
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['success' => false, 'error' => 'We cant find an account with this credentials.'], 401);
if (!empty($request)) {
// Check username.
//// Exists?
$existUser = DB::table('users')
->select('id')
->where('username', $request->username)
->first();
//return $existUser;
if ($existUser != 0) {
return array('Username already exists.');
}
//// Empty?
if (empty($request->username)) {
return array('Username is empty.');
}
//// Valid?
if (preg_match("/^[a-zA-Z0-9]+$/", $request->username) == 0) {
return array('Please use English characters only.');
}
// Check password.
//// Empty?
if (empty($request->password)) {
return array('Password is empty.');
}
// Check email.
//// Exists?
$existEmail = DB::table('users')
->select('id')
->where('email', $request->email)
->first();
if ($existEmail != 0) {
return array('Email already exists');
}
//// Empty?
if (empty($request->email)) {
return array('Email is empty.');
}
//// Valid?
if (!filter_var($request->email, FILTER_VALIDATE_EMAIL)) {
return array('Email is invalid.');
}
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
$passwd = hash('sha256', $request->password . $salt);
for ($round = 0; $round < 65536; $round++) {
$passwd = hash('sha256', $passwd . $salt);
}
$addUser = DB::table('users')
->insertGetId([
'username' => $request->username,
'email' => $request->email,
'password' => $passwd,
'salt' => $salt,
'remember_token' => ''
]);
//$addDetails =
DB::table('usr_details')
->insert([
'user_id' => $addUser,
'total_posts' => 0,
'total_threads' => 0,
'reg_date' => time(),
'last_post_date' => 0,
'last_post_location' => 0,
'ontime' => 0,
'strikes' => 0
]);
//$addProfile =
DB::table('usr_profile')
->insert([
'user_id' => $addUser,
'gender' => $request->gender,
'member_title' => '',
'website_address' => '',
'website_name' => '',
'location' => '',
'birthday' => 0,
'bio' => '',
'ip_address' => $ip,
'avatar' => '',
'ostatus' => 0,
'header' => '',
'footer' => '',
'post_style' => '',
'signature' => '',
'name_style' => '',
'display_name' => '',
'yt_channel' => '',
'country' => $request->country,
'date_format' => '',
'isClock24' => 0,
'isShowSeconds' => 0,
'isShowTimezone' => 0
]);
//$addPerm =
DB::table('usr_perm_id')
->insert([
'user_id' => $addUser,
'perm_id' => 4,
'usr_per_id' => 4,
'blg_per_id' => 4,
'for_per_id' => 4,
'sbx_per_id' => 4,
'str_per_id' => 4,
'doc_per_id' => 4,
'odb_per_id' => 4
]);
return array('1');
/* return \Response::json(
$addUser,
$addDetails,
$addProfile,
$addPerm
); */
}
catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response()->json(['success' => false, 'error' => 'Failed to login, please try again.'], 500);
}
// all good so return the token
return response()->json(['success' => true, 'data'=> [ 'token' => $token ]]);
return array();
}
/**
* API Login, on success return JWT Auth token
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function login(CookieJar $cookieJar, Request $request) {
public function login(Request $request) {
if (!empty($request)) {
$checkName = DB::table('users')
->select('*')
@ -291,31 +371,6 @@ class AuthController extends Controller {
return array();
}
/**
* Log out
* Invalidate the token, so user cannot use it anymore
* They have to relogin to get a new token
*
* @param Request $request
*/
public function logout(Request $request) {
$this->validate($request, ['token' => 'required']);
try {
JWTAuth::invalidate($request->input('token'));
return response()->json(['success' => true, 'message'=> 'You have successfully logged out.']);
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response()->json(['success' => false, 'error' => 'Failed to logout, please try again.'], 500);
}
}
/**
* API Recover Password
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function recover(Request $request) {
$user = User::where('email', $request->email)->first();
@ -351,4 +406,3 @@ class AuthController extends Controller {
return $get;
}
}
?>