我做了一个crud用户,但我有一个问题的密码哈希。
@extends('superadmin.layouts.app')
@section('content')
<div class="container-fluid">
<div class="row">
<!-- left column -->
<div class="col-md-12">
<!-- general form elements -->
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">New User</h3>
</div>
<!-- /.card-header -->
<!-- form start -->
<form method="POST" action="{{ route('user.store') }}" enctype="multipart/form-data">
@csrf
<div class="card-body">
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
<input type="text" class="form-control" placeholder="Enter Name" name="name" required>
</div>
@error('name')
<div class="col-12">
<div class="alert alert-danger">{{ $message }}</div>
</div>
@enderror
<div class="form-group">
<label for="exampleInputFile">Image</label>
<div class="input-group">
<div class="custom-file">
<input type="file" class="custom-file-input" id="Image" name="image" required>
<label class="custom-file-label" for="exampleInputFile">Choose file</label>
</div>
</div>
</div>
@error('image')
<div class="col-12">
<div class="alert alert-danger">{{ $message }}</div>
</div>
@enderror
<div class="form-group">
<label for="exampleInputEmail1">Secret word</label>
<input id="secretword" type="text" class="form-control @error('secretword') is-invalid @enderror" name="secretword" value="{{ old('secretword') }}" required autocomplete="secretword" autofocus>
</div>
@error('secretword')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<div class="form-group">
<label for="exampleInputEmail1">Telegram</label>
<input id="telegram" type="text" class="form-control @error('telegram') is-invalid @enderror" name="telegram" value="{{ old('telegram') }}" required autocomplete="telegram" autofocus>
</div>
@error('telegram')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<div class="form-group">
<label for="exampleInputEmail1">Email</label>
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
</div>
@error('email')
<div class="col-12">
<div class="alert alert-danger">{{ $message }}</div>
</div>
@enderror
<div class="form-group">
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label>
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<div class="form-group">
<label for="password-confirm" class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label>
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
</div>
</div>
<!-- /.card-body -->
<div class="card-footer pt-0">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>
</div>
<!--/.col (right) -->
</div>
<!-- /.row -->
</div>
@endsection <?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::latest()->paginate(50);
return view('superadmin.user.index', compact('users'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$usersall = User::all();
return view('superadmin.user.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'secretword' => 'required',
'email' => 'required',
'password' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$input = $request->all();
if ($image = $request->file('image')) {
$destinationPath = public_path('images/');
$profileImage = date('YmdHis') . "." . $image->getClientOriginalExtension();
$image->move($destinationPath, $profileImage);
$input['image'] = "$profileImage";
}
User::create($input);
return redirect()->route('user.index')
->with('success', 'User created');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$user = User::find($id);
return view('superadmin.user.edit', compact('user'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required',
'telegram' => 'required',
'secretword' => 'required',
]);
$input = $request->all();
$user = User::find($id);
$user->name = $request->name;
$user->telegram = $request->telegram;
$user->secretword = $request->secretword;
$user->save();
return redirect()->route('user.index')->with('success','User updated successfully');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$users = User::find($id);
$users->delete();
return redirect()->route('user.index')->with('success', 'Utilisateur supprime');
}
} <?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Qirolab\Laravel\Reactions\Traits\Reacts;
use Qirolab\Laravel\Reactions\Contracts\ReactsInterface;
class User extends Authenticatable implements ReactsInterface
{
use HasApiTokens, HasFactory, Notifiable, Reacts;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
'secretword',
'image',
'telegram',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function roles()
{
return $this
->belongsToMany(Role::class)
->withTimestamps();
}
public function users()
{
return $this
->belongsToMany('App\User')
->withTimestamps();
}
public function authorizeRoles($roles)
{
if ($this->hasAnyRole($roles)) {
return true;
}
abort(401, 'This action is unauthorized.');
}
public function hasAnyRole($roles)
{
if (is_array($roles)) {
foreach ($roles as $role) {
if ($this->hasRole($role)) {
return true;
}
}
} else {
if ($this->hasRole($roles)) {
return true;
}
}
return false;
}
public function hasRole($role)
{
if ($this->roles()->where('name', $role)->first()) {
return true;
}
return false;
}
};我想对密码进行散列,但我做不到。我在文档中看到了做Hash:: make ()是必要的,但我不知道在哪里必须这样做。有人能给我写一行需要做散列的代码吗?或者告诉我需要把它放在哪里?谢谢你的帮助
发布于 2022-09-10 18:53:31
对$request->validate()的调用返回验证数据的array。因此,您可以做的是将返回值保存到变量中,然后访问array上的array元素,以便在向User::create()方法提供所有内容之前对其进行散列。
$validated = $request->validate([
'name' => 'required',
'secretword' => 'required',
'email' => 'required',
'password' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$validated['password'] = Hash::make($validated['password']);
User::create($validated);发布于 2022-09-10 19:51:00
用这种方法来尝试,bcrypt函数是在laravel中,它很容易地给你一个散列密码。
$fields = $request->validate([
'name' => 'required|string',
'email' => 'required|string|unique:users,email',
'password' => 'required|string|confirmed'
]);
$user = User::create([
'name'=>$fields['name'],
'email' => $fields['email'],
'password' =>bcrypt($fields['password'])
]);https://stackoverflow.com/questions/73674329
复制相似问题