blog احترافي ب laravel 5.4 الجزء الثاني

فهاد الجزء الثاني من blog احترافي ب laravel 5.4  غادي نكملو الملفات الخاصين بالمستخدمين ولي كيمكن المستخدم من تسجيل الدخول ديالو ومشاهدة المعلومات الخاصة به وتعديلها كما غادي نزيدو الملف لي فيه الكود لي كيمكن من إضافة تعديل وحدف الفئات ديالنا أي les catégories.

نظرة سريعة بالفيديو


1- الملف login.blade.php


دائما فالمجلد users زيد ملف جديد سميه login.blade.php هادا الملف لي غادي يمكن المستخدم من تسجيل الدخول ديالومن بعد ما كيدخل الإمايل و كلمة المرور ديالو فل form ثم كترسل للfonction auth لي ف UsersController لي كتحقق واش المستخدم مسجل وكتكونيكطيه الكود ديال الملف هو :

                                    
                                        @extends('layouts.app-layout')

@section('styles')

@endsection

@section('header')
  @include('includes.header')
@endsection

@section('content')
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <h1 class="text-primary">
                Connexion
            </h1>  
            <form action="{{route('users.auth')}}" method="post" class="form-vertical">
             {{csrf_field()}}
               <div class="form-group">
                    <label for="title">Email*</label>
                    <input type="text" class="form-control" name="email" id="email" placeholder="Email">
                </div>
                <div class="form-group">
                    <label for="title">Mot de passe*</label>
                    <input type="password" class="form-control" name="password" id="password" placeholder="Passe">
                </div>
                <div class="form-group">
                    <button class="btn btn-success" type="submit" name="submit">Connexion</button>
                </div>
            </form>  
        </div>
    </div>
@endsection

@section('footer')
  @include('includes.footer')
@endsection

@section('scripts')

@endsection

                                    
                                

2- الملف profile.blade.php


دائما فالمجلد users زيد ملف جديد سميه profile.blade.php هادا الملف لي غادي يمكن المستخدم من تعديل البروفايل ديالومن بعد ما كتعرض المعلومات الخاصة ديالو فل form ثم كترسل المعلومات الجديدة لي دخل لل fonction update  لي غادي تكون فالملف ProfilesController ولي غادي نزيدوه من بعد الكود ديال الملف هو :

                                    
                                        @extends('layouts.app-layout')

@section('styles')

@endsection

@section('header')
  @include('includes.header')
@endsection

@section('content')
    <div class="row">
        @include('includes.sidebar')
        <div class="col-md-4 col-md-offset-1">
            <h1 class="text-primary">
                Modifier mon profile
            </h1>  
            <hr>
            <div align="center">
                <img src="{{URL::to('avatars/'.Auth::user()->profile->image)}}" alt="" class="img-responsive">
            </div>
            <hr>
            <form action="{{route('user.profile.update')}}" method="post" class="form-vertical" enctype="multipart/form-data">
                {{csrf_field()}}
               <div class="form-group">
                    <label for="title">Nom & Prénom*</label>
                    <input type="text" class="form-control" name="name" id="name" placeholder="Nom & Prénom" value="{{Auth::user()->name}}">
                </div>
               <div class="form-group">
                    <label for="title">Email*</label>
                    <input type="text" class="form-control" name="email" id="email" placeholder="Email" value="{{Auth::user()->email}}">
                </div>
                <div class="form-group">
                    <label for="title">Mot de passe*</label>
                    <input type="password" class="form-control" name="password" id="password" placeholder="Nouveau passe">
                </div>
                 <div class="form-group">
                    <label for="category">Image*</label>
                    <input type="file" class="form-control" name="file" id="file">
                </div>
                 <div class="form-group">
                    <label for="category">Facebook*</label>
                    <input type="text" class="form-control" name="facebook" id="facebook" placeholder="Facebook" value="{{Auth::user()->profile->facebook}}">
                </div>
                <div class="form-group">
                    <label for="category">Youtube*</label>
                    <input type="text" class="form-control" name="youtube" id="youtube" placeholder="Youtube" value="{{Auth::user()->profile->youtube}}">
                </div>
                <div class="form-group">
                    <button class="btn btn-success" type="submit" name="submit">Valider</button>
                </div>
            </form>  
        </div>
    </div>
@endsection

@section('footer')
  @include('includes.footer')
@endsection

@section('scripts')

@endsection

                                    
                                

3- الملف ProfilesController.php


كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه ProfilesController.php لي غادي تكون فيه fonction update لي كتستقبل المعلومات من الملف profile.blade.php وكتعدل المعلومات الخاصة بالمستخدم لي مكونيكطي وكدالك ل profile ديالو الكود ديال الملف هو :

                                      
                                        <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
class ProfilesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return view('users.profile');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * 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)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        //
        $this->validate($request,[
            'name'=>'required',
            'email'=>'required|email',
            'facebook'=>'required',
            'youtube'=>'required'
        ]);
        $user = Auth::user();
        if($request->hasFile('file')){
            $file = $request->file;
            $name = time().$file->getClientOriginalName();
            $file->move('avatars',$name);
            $user->profile->image = $name;
            $user->profile->save();
        }
        $user->name = $request->name;
        $user->email = $request->email;
        $user->profile->facebook = $request->facebook;
        $user->profile->youtube = $request->youtube;
        $user->save();
        $user->profile->save();
        if($request->has('password')){
            $user->password = bcrypt($request->password);
            $user->profile->save();
        }
        return redirect()->back()->with(['success'=>'Profile modifié']);


    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

                                      
                                    

4- الملف Profile.php


من بعد فالمجلد app كنزيد ملف كنسميه Profile.php هادا لي غادي يمكني باش ندير la relation ما بين جدول ل profiles والجدول users فكاين ل fonction user لي كتقولنا بلي كل profile خاص بمستخدم واحد الكود ديال الملف هو :

                                        
                                            <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    //
    protected $fillable = ['user_id'];
    public function user(){
        return $this->belongsTo('App\User');
    }
}

                                        
                                    

5- الملف admin/users/index.blade.php


منبعد ف views كنزيد مجلد جديد كنسميه admin فيه كنزيد مجلد جديد users فيه زيد ملف جديد سميه index.blade.php هادا الملف لي غادي يتعرضوا فيه كل المستخدمين لي عندنا ولي غادي يكون عند الأدمن الصلاحية باش يعين منهم les admins جداد ويحدف آخرين فكنستقبل ل users من ل fonction index لي كاينة فالملف UsersController.php وكنخدم ب foreach باش كنعرض كل المعلومات فبلاصتها بالإضافة للروابط لي كيمكنوا من تعديل وحدف المستخدمين الكود ديال الملف هو :

                                        
                                            @extends('layouts.app-layout')

@section('styles')

@endsection

@section('header')
  @include('includes.header')
@endsection

@section('content')
    <div class="row">
        @include('includes.sidebar')
        <div class="col-md-9">
           <table class="table">
                <thead>
                    <tr>
                        <th>Id</th>
                        <th>Image</th>
                        <th>Nom & Prénom</th>
                        <th>email</th>
                        <th>Admin</th>
                        <th>Inscrit le:</th>
                        <th>Actions</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach($users as $user)
                        <tr>
                           <td>{{$user->id}}</td>
                           <td><img src="{{URL::to('avatars/'.$user->profile->image)}}" height="50" width="50"/></td>
                           <td>{{$user->name}}</td>
                           <td>{{$user->email}}</td>
                           <td>
                                @if($user->is_admin)
                                  <a href="{{route('user.remove.admin',['id'=>$user->id])}}"<span class="label label-danger">Retirer</span></a>
                                @else
                                  <a href="{{route('user.add.admin',['id'=>$user->id])}}"<span class="label label-success">Désigner Admin</span></a>
                                @endif
                           </td>
                           <td>{{$user->created_at}}</td>
                           <td>
                             @if(Auth::user()->id == $user->id)
                                <a href="{{route('users.edit',['id'=>$user->id])}}" class="btn btn-warning btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                             @endif
                             @if(Auth::user()->id !== $user->id)
                                <a href="{{route('user.delete',['id'=>$user->id])}}" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                             @endif
                           </td>
                        </tr>
                    @endforeach
                </tbody>
            </table>
        </div>
    </div>
@endsection

@section('footer')
  @include('includes.footer')
@endsection

@section('scripts')

@endsection

                                        
                                    

كلمات مفاتيح :