Complete validations of register, change some names of routes.

This commit is contained in:
catsworld
2016-09-05 19:44:45 +08:00
committed by onionwyl
parent 67fcb7003e
commit e9e090a50b
14 changed files with 198 additions and 162 deletions
+12 -4
View File
@@ -7,6 +7,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Response;
use App\GoodCat;
use App\GoodInfo;
use App\Transaction;
@@ -59,9 +60,9 @@ class GoodController extends Controller
public function getInfo(Request $request, $good_id)
{
$data = [];
$data['goods'] = GoodInfo::where('id', $good_id)->first();
$data['users'] = UserInfo::where('id',$data['goods']->user_id)->first();
$data['sells'] = Transaction::where('good_id',$good_id)->first();
$data['good'] = GoodInfo::where('id', $good_id)->first();
$data['user'] = UserInfo::where('id',$data['good']->user_id)->first();
$data['sell'] = Transaction::where('good_id',$good_id)->first();
if($request->session()->has('user_id'))
$data['user_id'] = $request->session()->get('user_id');
else
@@ -149,7 +150,7 @@ class GoodController extends Controller
$good->save();
$new_good = GoodInfo::orderby('id', 'dsc')->first();
Storage::put(
'good/title/'.$new_good->id,
'good/titlepic/'.$new_good->id,
file_get_contents($request->file('goodTitlePic')->getRealPath())
);
return Redirect::to('/good/add');
@@ -259,4 +260,11 @@ class GoodController extends Controller
$fav->save();
return Redirect::to('/good');
}
public function getTitlePic(Request $request, $good_id)
{
$image = Storage::get('good/titlepic/'.$good_id);
$response = Response::make($image);
return $response;
}
}
+50 -66
View File
@@ -21,71 +21,52 @@ use Illuminate\Support\Facades\Session;
use App\Http\Controllers\Controller;
use Hash;
use Mail;
use App\Http\Requests\RegisterRequest;
class UserController extends Controller
{
public function adduser(Request $request)
{
$this->validate($request,[
'username'=>'required|max:20',
'email'=>'required|email|max:20',
'password'=>'required|max:20',
'nickname'=>'max:20',
]);
$input = $request->all();
$test = User::where('username',$request->username)->first();
if($test!=NULL)
{
return redirect()->back()->withInput()->withErrors('用户名已存在!');
echo "用户名已存在!";
}
$user = new User;
$user->username = $input['username'];
$user->password = sha1($input['password']);
$user->email = "#".$input['email'];
$user->nickname = $input['nickname'];
$userinfo=new UserInfo;
if($user->save())
{
$userinfo->save();
$new_user = User::where('username', $user->username)->first();
return redirect('/user/'.$new_user->id.'/sendCheckLetter');
}
else
{
return redirect()->back()->withInput()->withErrors('注册失败!');
}
}
public function login(Request $request)
{
$input = $request->all();
$user = User::where('username',$input['username'])->first();
// if($user->password==$request->password&&$user->baned==0)
if(sha1($input['password'])==$user->password)
{
if($user->email[0]=='#') 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('/');
}
else
{
return redirect()->back()->withInput()->withErrors('用户名或者密码错误!');
if($request->method()=='GET'){
return View::make('user.login');
}else{
$input = $request->all();
$user = User::where('username',$input['username'])->first();
if(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('用户名或者密码错误!');
}
}
}
public function register(Request $request)
public function register(RegisterRequest $request)
{
return View::make('user.register');
}
public function show(Request $request)
{
return View::make('user.show');
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)
@@ -101,7 +82,7 @@ class UserController extends Controller
$request->session()->forget('username');
$request->session()->forget('nickname');
$request->session()->forget('is_admin');
return redirect('/');
return Redirect::to('/');
}
public function editList(Request $request, $user_id)
@@ -113,7 +94,7 @@ class UserController extends Controller
$user->tel_num = $input['tel_num'];
$user->address = $input['address'];
$user->update();
return redirect('/user/'.$user_id);
return Redirect::to('/user/'.$user_id);
}
public function showEditPage(Request $request, $user_id)
@@ -127,9 +108,9 @@ class UserController extends Controller
{
$data = [];
$user = User::where('id',$user_id)->first();
if($user->email[0]!='#') return redirect()->back();
if($user->havecheckedemail) return Redirect::to('/')->withErrors('该用户已经验证过邮箱。');
$check_email = CheckEmail::where('user_id',$user_id)->first();
$email = substr($user->email, 1);
$email = $user->email;
$token = sha1($email.time());
if($check_email!=NULL){
$token = $check_email->token;
@@ -145,20 +126,23 @@ class UserController extends Controller
$m->from('519418441@qq.com', 'Catsworld');
$m->to($email, $user->username)->subject('');
});
return redirect('/show');
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('/show')->withError('未知的Token');
}
if($check_email==NULL) return Redirect::to('/login')->withErrors('未知的Token。');
$user = User::find($check_email->user_id);
$user->email = substr($user->email, 1);
$user->havecheckedemail = true;
$user->update();
$check_email->delete();
return redirect('/show');
return Redirect::to('/login')->withErrors('已向验证您的邮箱!现在你可以登录并完善更多信息啦!');
}
public function passwordReset(Request $request)
+1 -1
View File
@@ -23,7 +23,7 @@ class Authenticate
}
else
{
return Redirect::to('/show');
return Redirect::to('/login');
}
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ class Check
}
else
{
return Redirect::to('/show');
return Redirect::to('/login');
}
}
}
+51
View File
@@ -0,0 +1,51 @@
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class RegisterRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
if($this->method()=='GET') return [];
return [
'username'=>'required|alpha_dash|between:3,64|unique:users,username',
'email'=>'required|email|unique:users,email|max:64',
'password'=>'required|confirmed|between:6,128',
'nickname'=>'max:128',
];
}
public function messages(){
return [
'username.required' => '用户名不能为空!',
'username.alpha_dash' => '用户名只能为字母、数字、减号和下划线!',
'username.between' => '用户名长度必须为3-64个字符!',
'username.unique' => '该用户名已被注册!',
'email.required' => '邮箱不能为空!',
'email.email' => '邮箱格式不正确!',
'email.unique' => '已有用户使用该邮箱注册!',
'email.max' => '邮箱长度不能超过64个字符!',
'password.required' => '密码不能为空!',
'password.confirmed' => '两次输入的密码不一致!',
'password.between' => '密码长度必须为6-128个字符',
'nickname.max' => '昵称长度不能超过128个字符!'
];
}
}
+6 -10
View File
@@ -76,6 +76,10 @@ Route::group(['middleware' => ['web']],function () {
"middleware" => "auth"
]);
Route::get('/good/titlepic/{good_id}', [
"uses" => "GoodController@getTitlePic"
]);
Route::get('/good/quick_access', [
"uses" => "GoodController@quickAccess",
"middleware" => "auth"
@@ -149,19 +153,11 @@ Route::group(['middleware' => ['web']],function () {
"middleware" => "admin"
]);
Route::post('/adduser', [
"uses" => "UserController@adduser"
]);
Route::get('/show', [
"uses" => "UserController@show"
]);
Route::get('/register', [
Route::match(['post', 'get'], '/register', [
"uses" => "UserController@register"
]);
Route::post('/login', [
Route::match(['post', 'get'], '/login', [
"uses" => "UserController@login"
]);
@@ -21,6 +21,7 @@ class CreateUsersTable extends Migration
$table->string('SSO');
$table->string('nickname');
$table->string('email')->unique();
$table->boolean('havecheckedemail');
$table->integer('role_id');
$table->integer('baned');
$table->timestamps();
+3 -3
View File
@@ -5,7 +5,7 @@
<body>
@include('layout.header')
<div class="page-content">
<form class="form-horizontal" action="/good/add" method="POST">
<form class="form-horizontal" action="/good/add" method="POST" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="form-group ">
@@ -63,14 +63,14 @@
<input type="text" class="form-control" placeholder="TAG" name="good_tag">
</div>
</div>
<div class="form-group ">
<div class="form-group">
<label for="goodTitleUpload" class="col-md-2 col-sm-offset-5 button">上传封面</label>
<div class="col-sm-10">
<input type="file" id="goodTitleUpload" class="show-for-sr" name="goodTitlePic" style="margin: 0;" onchange="preview(this)">
{!! csrf_field() !!}
</div>
</div>
<div class="form-group ">
<div class="form-group">
<label class="col-sm-2 control-label">封面预览:</label>
<div class="col-sm-10">
<div id="preview" style="max-width: 50%;margin-left: 25%"></div>
+7 -11
View File
@@ -4,7 +4,6 @@
<body>
@include('layout.header')
<div class="page-content">
@foreach($goods as $good)
{{$good->description}}<br/>
@if($user_id==$good->user_id)
<a href='/good/{{$good->id}}/edit'>Edit</a><br/>
@@ -13,20 +12,17 @@
{{ method_field('DELETE') }}
<input type="submit" name="submit1" value="Delete">
</form>
@endif
@if($user_id!=$good->user_id)
<form action='/good/{{$good->id}}/buy' method='POST'>
{!! csrf_field() !!}
<input type="submit" name="sumbit2" value="Buy" >
</form>
@endif
<form action = '/good/{{ $good->id }}/add_favlist' method = 'POST'>
{!! csrf_field() !!}
<input type = "submit" value = "✪ω✪"/>
</form>
@endif
@if($user_id!=$goods->user_id)
<form action='/good/{{$goods->id}}/buy' method='POST'>
{!! csrf_field() !!}
<input type="submit" name="sumbit2" value="Buy" >
</form>
@endif
@if($user_id == $sells->buyer_id&&$sells->status==2)
{{$users->tel_num}}<br/>
@endif
<a href='/good'>GoodList</a>
</div>
@include('layout.footer')
+48 -47
View File
@@ -4,7 +4,54 @@
</head>
<body>
@include('layout.header')
<script language="javascript" type="text/javascript">
<div class="page-content">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="form-group">
<label class="col-sm-2 control-label">选择分类:</label>
<div class="col-sm-10">
<select size="1" name="D1" onChange="javascript:test('mune_x'+this.value)">
<option value="0" selected="selected">全部显示</option>
<option value="1" >我是分类1</option>
<option value="2">我是分类2</option>
<option value="3">我是分类4</option>
<option value="4">我是滑稽</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">商品列表</label>
<table class="table table-striped">
<tr>
<td>#</td>
<td>商品名称</td>
<td>最低价格</td>
<td>最高价格</td>
</tr>
@foreach($goods as $good)
<tr class="cat{{ $good->cat_id }}">
<td>{{$good->id}}</td>
<td>{{ $good->good_name }}</td>
<td>{{ $good->pricemin }}</td>
<td>{{ $good->pricemax }}</td>
</tr>
@endforeach
</table>
</div>
<div class="form-group">
<div class="col-sm-3 col-sm-offset-3">
<a href="/good/add" class="button">添加商品</a>
</div>
<div class="col-sm-4">
<a href="/good/mygood" class="button">我的商品</a>
</div>
</div>
</div>
</div>
<ul>
</div>
<script>
function test(Names) {
if(Names=="mune_x0")
{
@@ -119,51 +166,5 @@
}
}
</script>
<div class="page-content">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="form-group">
<label class="col-sm-2 control-label">选择分类:</label>
<div class="col-sm-10">
<select size="1" name="D1" onChange="javascript:test('mune_x'+this.value)">
<option value="0" selected="selected">全部显示</option>
<option value="1" >我是分类1</option>
<option value="2">我是分类2</option>
<option value="3">我是分类4</option>
<option value="4">我是滑稽</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">商品列表</label>
<table class="table table-striped">
<tr>
<td>#</td>
<td>商品名称</td>
<td>最低价格</td>
<td>最高价格</td>
</tr>
@foreach($goods as $good)
<tr class="cat{{ $good->cat_id }}">
<td>{{$good->id}}</td>
<td>{{ $good->good_name }}</td>
<td>{{ $good->pricemin }}</td>
<td>{{ $good->pricemax }}</td>
</tr>
@endforeach
</table>
</div>
<div class="form-group">
<div class="col-sm-3 col-sm-offset-3">
<a href="/good/add" class="button">添加商品</a>
</div>
<div class="col-sm-4">
<a href="/good/mygood" class="button">我的商品</a>
</div>
</div>
</div>
</div>
</div>
@include('layout.footer')
@include('includes.foot')
+1 -2
View File
@@ -18,8 +18,7 @@
<li><a href="/good/add" class="button">出售</a></li>
@else
<li><a href="/register">注册</a></li>
<li><a href="/show">登录</a></li>
<li><a href="/good/add" class="button">出售</a></li>
<li><a href="/login">登录</a></li>
@endif
</ul>
</div>
+1 -1
View File
@@ -1,7 +1,7 @@
<div class="small-6 columns">
<form action="/good/quick_access" method="GET">
<div class="input-group" id="top-bar-quick-access">
<input class="input-group-field" type="search" name="query" placeholder="开始我们的交易吧~"/>
<input class="input-group-field" type="search" name="query" placeholder="开始交易吧(→﹃→)"/>
<div class="input-group-button">
<input type="submit" class="button" value="G♂"/>
</div>
@@ -4,6 +4,13 @@
<body>
@include('layout.header')
<div class="page-content">
@if (count($errors) > 0)
@foreach ($errors->all() as $error)
<label>
<span class="form-error is-visible">{{ $error }}</span>
</label>
@endforeach
@endif
<form action="/login" method="POST">
<div>
用户名:<input type="text" name="username">
+9 -16
View File
@@ -4,24 +4,17 @@
<body>
@include('layout.header')
<div class="page-content">
<form action="/adduser" method="POST" data-abide novalidate>
@if (count($errors) > 0)
<label>
<input type="text" name="username" placeholder="用户名" required pattern="alpha_numeric">
<span class="form-error">用户名不能为空!只允许包含字母和数字!</span>
</label>
<label>
<input type="password" id="password" name="password" placeholder="密码" required>
<span class="form-error">密码不能为空!</span>
</label>
<label>
<input type="password" placeholder="确认密码" required pattern="alpha_numeric" data-equalto="password">
<span class="form-error">两次输入的密码不一致!</span>
</label>
<input type="text" name="nickname" placeholder="昵称">
<label>
<input type="email" name="email" placeholder="邮箱" required>
<span class="form-error">邮箱未填写或格式不正确!</span>
<span class="form-error is-visible">{{ $errors->first() }}</span>
</label>
@endif
<form action="/register" method="POST" data-abide novalidate>
<input type="text" name="username" placeholder="用户名(必填,3-64)">
<input type="password" id="password" name="password" placeholder="密码(必填,6-128)">
<input type="password" name="password_confirmation" placeholder="确认密码(必填)">
<input type="text" name="email" placeholder="邮箱(必填)">
<input type="text" name="nickname" placeholder="昵称(<=128)">
{!! csrf_field() !!}
<input type="submit" class="button" value="注册">
</form>