让Authenticated User使用Sentry 2查看Laravel 4中其他用户的配置文件

时间:2014-03-07 15:54:13

标签: php laravel-4 userid cartalyst-sentry

我是Laravel 4Sentry 2的新手,但到目前为止我还能活下来。我现在遇到了一个问题,因为当我以userid(1)身份登录时我想要查看userid(2)的个人资料我只是看到了用户ID(1)的信息。用户ID(2)。

我知道使用过滤器可能会派上用场,但如果我必须诚实。我不知道我应该看什么等等。

我知道这个网站不是为了给出答案。但是,如果有人可以给我一些答案,在哪里看,我应该记住的等等,非常感谢。

--- --- EDIT

路线:

Route::group(array('before'=>'auth'), function(){

    Route::get('logout', 'HomeController@logout');
    Route::get('profile/{username}', 'ProfileController@getIndex');

});

Route::filter('auth', function($route)
{
    $id = $route->getParameter('id');
    if(Sentry::check() && Sentry::getUser()->id === $id) {
        return Redirect::to('/');
    }
});

ProfileController可

public function getIndex($profile_uname)
    {
        if(Sentry::getUser()->username === $profile_uname) {
            // This is your profile
            return View::make('user.profile.index');
        } else {
            // This isn't your profile but you may see it!
            return ??
        }
    }

查看

@extends('layouts.userprofile')

@section('title')
    {{$user->username}}'s Profile
@stop

@section('notification')
@stop

@section('menu')
    @include('layouts.menus.homemenu')
@stop

@section('sidebar')
    @include('layouts.menus.profilemenu')
@stop

@section('content')
    <div class="col-sm-10 col-md-10 col-xs-10 col-lg-10">
        <div class="panel panel-info">
            <div class="panel-heading"><h3>{{ $user->username }}</h3></div>
        </div>
    </div>
@stop

@section('footer')
@stop

1 个答案:

答案 0 :(得分:1)

这可能对您有用:

<?php

public function getIndex($profile_uname)
{
    if(Sentry::getUser()->username === $profile_uname) {
        // This is your profile
        return View::make('user.profile.index');
    } else {
        // This isn't your profile but you may see it!
        return View::make('user.profile.index')->with('user', Sentry::findUserByLogin($profile_uname));
    }
}

如果用户名不是您的登录列,那么您可以分两步完成:

$userId = \Cartalyst\Sentry\Users\Eloquent\User::where('username', $profile_uname)->first()->id;

return View::make('user.profile.index')->with('user', Sentry::findUserById($userId));

如果您的用户模型与用户表关联,则可以执行以下操作:

$userId = User::where('username', $profile_uname)->first()->id;

return View::make('user.profile.index')->with('user', Sentry::findUserById($userId));

在最后一种情况下,您可能会使用相同的模型,因为它们在Sentry和纯粹的Eloquent中是相同的:

$user = User::where('username', $profile_uname)->first();

return View::make('user.profile.index')->with('user', $user);

另外,为了避免与当前登录用户相关的观看次数之间发生冲突,您应该通过$userView::share() View::composer()重命名您要实例化的$user变量到$loggedUser或类似的东西。