0

我对Laravel 4and有点陌生Sentry 2,但到目前为止我已经成功地生存了下来。我现在遇到了一个问题,因为当我以身份登录userid(1)并且我想查看我的个人资料时,userid(2)我只是在 userid(2) 的个人资料上看到了 userid(1) 的信息。

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

我知道这个网站不是用来回答的。但是,如果有人能给我一些答案,在哪里看,我应该记住什么等等,那将非常感激。

- -编辑 - -

路线:

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('/');
    }
});

配置文件控制器

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
4

1 回答 1

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);

此外,为了避免与当前登录用户相关的视图之间发生冲突,您应该重命名$user您通过View::share()View::composer()from $userto$loggedUser或类似名称实例化的变量。

于 2014-03-07T16:07:18.883 回答