Upgrade the Laravel to version 5.4. Optimize the directory structure. Add a avatar function. Add the validate for addGood form. Adjust the frontend pages. Other changes.
272 lines
9.9 KiB
PHP
272 lines
9.9 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: koooyf
|
|
* Date: 6/10/16
|
|
* Time: 8:33 PM
|
|
*/
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Redirect;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Facades\View;
|
|
use App\User;
|
|
use App\UserInfo;
|
|
use App\CheckEmail;
|
|
use App\PasswordReset;
|
|
use App\FavList;
|
|
use App\GoodInfo;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Session\Store;
|
|
use Illuminate\Support\Facades\Session;
|
|
use App\Http\Controllers\Controller;
|
|
use Hash;
|
|
use Mail;
|
|
use Image;
|
|
use App\Http\Requests\RegisterRequest;
|
|
use App\Http\Requests\LoginRequest;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function login(LoginRequest $request)
|
|
{
|
|
if($request->method()=='GET'){
|
|
return View::make('user.login');
|
|
}else{
|
|
$input = $request->all();
|
|
$user = User::where('username',$input['username'])->first();
|
|
if($user!=NULL&&sha1($input['password'])==$user->password&&(!$user->baned))
|
|
{
|
|
if(!$user->havecheckedemail) return Redirect::back()->withInput()->withErrors('未验证您的邮箱,请查收您的电子邮箱或<a href="/user/'.$user->id.'/sendCheckLetter\>重新发送一封</a>');
|
|
$request->session()->put('user_id', $user->id);
|
|
$request->session()->put('username', $user->username);
|
|
$request->session()->put('nickname', $user->nickname);
|
|
if($user->privilege == 2)
|
|
$request->session()->put('is_admin', 1);
|
|
return Redirect::to('/');
|
|
}
|
|
else
|
|
{
|
|
return Redirect::back()->withInput()->withErrors('用户名或者密码错误!<a href="/iforgotit">忘记密码?</a>');
|
|
}
|
|
}
|
|
}
|
|
|
|
public function register(RegisterRequest $request)
|
|
{
|
|
if($request->method()=='GET'){
|
|
return View::make('user.register');
|
|
}else{
|
|
$input = $request->all();
|
|
$user = new User;
|
|
$user->username = $input['username'];
|
|
$user->password = sha1($input['password']);
|
|
$user->email = $input['email'];
|
|
$user->nickname = $input['nickname'];
|
|
$user->havecheckedemail = false;
|
|
$user->save();
|
|
$userinfo=new UserInfo;
|
|
$userinfo->save();
|
|
$new_user = User::where('username', $user->username)->first();
|
|
return Redirect::to('/user/'.$new_user->id.'/sendCheckLetter');
|
|
}
|
|
}
|
|
|
|
public function getList(Request $request, $user_id)
|
|
{
|
|
$data = [];
|
|
$data['user'] = UserInfo::find($user_id);
|
|
return View::make('user.userinfo')->with($data);
|
|
}
|
|
|
|
public function logOut(Request $request)
|
|
{
|
|
$request->session()->forget('user_id');
|
|
$request->session()->forget('username');
|
|
$request->session()->forget('nickname');
|
|
$request->session()->forget('is_admin');
|
|
return Redirect::to('/');
|
|
}
|
|
|
|
public function editList(Request $request, $user_id)
|
|
{
|
|
$input = $request->all();
|
|
$user = UserInfo::find($user_id);
|
|
$user->gender = $input['gender'];
|
|
$user->realname = $input['realname'];
|
|
$user->tel_num = $input['tel_num'];
|
|
$user->address = $input['address'];
|
|
$user->update();
|
|
Storage::put(
|
|
'avatar/'.$user_id,
|
|
Image::make($request->file('avatarPic'))->crop(round($input['crop_width']),round($input['crop_height']),round($input['crop_x']),round($input['crop_y']))->resize(800, 450)->encode('data-url')
|
|
);
|
|
return Redirect::to('/user/'.$user_id);
|
|
}
|
|
|
|
public function showEditPage(Request $request, $user_id)
|
|
{
|
|
$data = [];
|
|
$data['user'] = UserInfo::find($user_id);
|
|
return View::make('user.editinfo')->with($data);
|
|
}
|
|
|
|
public function sendCheckLetter(Request $request, $user_id)
|
|
{
|
|
$data = [];
|
|
$user = User::where('id',$user_id)->first();
|
|
if($user->havecheckedemail) return Redirect::to('/')->withErrors('该用户已经验证过邮箱。');
|
|
$check_email = CheckEmail::where('user_id',$user_id)->first();
|
|
$email = $user->email;
|
|
$token = sha1($email.time());
|
|
if($check_email!=NULL){
|
|
$token = $check_email->token;
|
|
}else{
|
|
$new_check_email = new CheckEmail;
|
|
$new_check_email->user_id = $user_id;
|
|
$new_check_email->token = $token;
|
|
$new_check_email->save();
|
|
}
|
|
$data['token'] = $token;
|
|
$data['host'] = $request->server("HTTP_HOST");
|
|
Mail::send('user.checkLetter', $data, function ($m) use ($user, $email) {
|
|
$m->from('519418441@qq.com', 'Catsworld');
|
|
$m->to($email, $user->username)->subject('');
|
|
});
|
|
return Redirect::to('/login')->withErrors('已向您的邮箱发送一封验证邮件,请查收。验证完成后即可登录先锋市场。');
|
|
}
|
|
|
|
public function haveSentCheckLetter(Request $request)
|
|
{
|
|
return View::make('user.haveSentCheckLetter');
|
|
}
|
|
|
|
public function checkEmail(Request $request, $token)
|
|
{
|
|
$check_email = CheckEmail::where('token', $token)->first();
|
|
if($check_email==NULL) return Redirect::to('/login')->withErrors('未知的Token。');
|
|
$user = User::find($check_email->user_id);
|
|
$user->havecheckedemail = true;
|
|
$user->update();
|
|
$check_email->delete();
|
|
return Redirect::to('/login')->withErrors('已向验证您的邮箱!现在你可以登录并完善更多信息啦!');
|
|
}
|
|
|
|
public function passwordReset(Request $request)
|
|
{
|
|
if($request->method() == 'GET'){
|
|
$data['method']='GET';
|
|
return View::make('user.passwordReset')->with($data);
|
|
}else{
|
|
$data['method']='POST';
|
|
$data['sentence']='';
|
|
$input = $request->all();
|
|
$user = User::where('username', $input['username'])->first();
|
|
if($user==NULL||$user->email!=$input['email']){
|
|
$data['sentence']='无法验证你的身份,请检查用户名与邮箱是否有误';
|
|
}else{
|
|
$data['sentence']='已向你的邮箱发送一份包含重置密码的链接的邮件。';
|
|
$password_reset = PasswordReset::where('user_id',$user->id)->first();
|
|
$email = $user->email;
|
|
$token = sha1($email.time());
|
|
if($password_reset!=NULL){
|
|
$token = $password_reset->token;
|
|
}else{
|
|
$new_password_reset = new PasswordReset;
|
|
$new_password_reset->user_id = $user->id;
|
|
$new_password_reset->token = $token;
|
|
$new_password_reset->save();
|
|
}
|
|
$data['token'] = $token;
|
|
$data['host'] = $request->server("HTTP_HOST");
|
|
Mail::send('user.resetLetter', $data, function ($m) use ($user, $email) {
|
|
$m->from('519418441@qq.com', 'Catsworld');
|
|
$m->to($email, $user->username)->subject('');
|
|
});
|
|
}
|
|
return View::make('user.passwordReset')->with($data);
|
|
}
|
|
}
|
|
|
|
public function resetPassword(Request $request, $token)
|
|
{
|
|
if($request->method() == 'GET'){
|
|
$data['method'] = 'GET';
|
|
$data['token'] = $token;
|
|
return view::make('user.resetPassword')->with($data);
|
|
}else{
|
|
$data['method'] = 'POST';
|
|
$data['sentence'] = '';
|
|
$password_reset = PasswordReset::where('token', $token)->first();
|
|
if($password_reset==NULL){
|
|
$data['sentence'] = '未知的Token';
|
|
return View::make('user.resetPassword')->with($data);
|
|
}
|
|
$input = $request->all();
|
|
$user = User::find($password_reset->user_id);
|
|
$user->password = sha1($input['password']);
|
|
$user->update();
|
|
$password_reset->delete();
|
|
$data['sentence'] = '成功重置密码!';
|
|
return View::make('user.resetPassword')->with($data);
|
|
}
|
|
}
|
|
|
|
public function getFavlist(Request $request)
|
|
{
|
|
$data = [];
|
|
$data['user_id'] = $request->session()->get('user_id');
|
|
$data['goods'] = FavList::orderby('id', 'asc')->where('user_id', $data['user_id'])->get();
|
|
$data['good_info'] = GoodInfo::orderBy('id', 'asc')->get()->keyBy('id');
|
|
return view::make('user.favlist')->with($data);
|
|
}
|
|
|
|
public function editFavlist(Request $request)
|
|
{
|
|
$data = [];
|
|
$data['user_id'] = $request->session()->get('user_id');
|
|
$data['goods'] = FavList::orderBy('id', 'asc')->where('user_id', $data['user_id'])->get();
|
|
$data['good_info'] = GoodInfo::orderBy('id', 'asc')->get()->keyBy('id');
|
|
return view::make('user.editFavlist')->with($data);
|
|
}
|
|
|
|
public function delFavlist(Request $request)
|
|
{
|
|
$user_id = $request->session()->get('user_id');
|
|
$input = $request->all();
|
|
if(!isset($input['del_goods']))
|
|
return Redirect::to('/user/edit_favlist');
|
|
foreach($input['del_goods'] as $del_good)
|
|
{
|
|
$item = FavList::where('user_id', $user_id)->where('good_id', $del_good)->get();
|
|
foreach($item as $it)
|
|
{
|
|
$del_id = FavList::find($it->id);
|
|
}
|
|
$del_id->delete();
|
|
}
|
|
return Redirect::to('/user/edit_favlist');
|
|
}
|
|
|
|
public function getSimpleAvatar(Request $request, $user_id)
|
|
{
|
|
if(!Storage::exists('avatar/'.$user_id))
|
|
$file = Storage::get('public/avatar.jpg');
|
|
else
|
|
$file = Storage::get('avatar/'.$user_id);
|
|
$image = Image::make($file)->resize(600, 600);
|
|
return $image->response('jpg');
|
|
}
|
|
|
|
public function getAvatar(Request $request, $user_id, $width, $height)
|
|
{
|
|
if(!Storage::exists('avatar/'.$user_id))
|
|
$file = Storage::get('public/avatar.jpg');
|
|
else
|
|
$file = Storage::get('avatar/'.$user_id);
|
|
$image = Image::make($file)->resize($width, $height);
|
|
return $image->response('jpg');
|
|
}
|
|
}
|