User registration.
このコミットが含まれているのは:
コミット
009b79869a
|
@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
新しいイシューから参照