2012-04-16 13 views
6

私はPHPでログインしているかどうかを確認する方法を知っていますが、イベントが発生したときにスタイリングを行う必要があり、別のJavaScriptファイルを作成しました。これはDrupal変数か、私が参照できるものですか?ユーザーがJavaScript経由でDrupalサイトにログインしているかどうかを確認するにはどうすればよいですか?

+1

あなたはJavaScriptでスタイリングしていますか?ユーザー認証に基づいてjavascriptで行う作業については、非常に注意してください。誰でもあなたのページでJSを操作するのはとても簡単です。 – Webnet

答えて

13

new custom modulehook_initの実装で作成します。

function [YOUR_MODULE]_init() 
{ 
    global $user; 
    drupal_add_js(array('user_js_uid' => $user->uid), 'setting'); 
} 

は、その後、あなたのjavascriptのコードでは、モジュールuser_js_uidで定義された変数の値をチェック。

​​

・ホープ、このことができます...ムハンマド

+1

'jQuery.cookie(" DRUPAL_UID ");'は常にヌルを返します – FLY

+2

7.12 – jhoff

+0

+1に「DRUPAL_UID」クッキーはありません。私はこの場合の修正を加えました。ありがとう。 –

11

をDOMの準備ができて、使用する標準であるためにあなたが待っている場合は、DrupalのCSSクラスを生成し、あなたは(jQueryを使って)のような何かができる:

if($("body.not-logged-in").length) 
{ 
    // user is not logged in 
} 
+1

この方法では、チェックするライブラリを追加する必要はありません。 – Haje

+0

これは素晴らしい解決策で、ワニスなどを使用していない場合はカスタムモジュールを書く必要はありません – Bery

+0

このようにしてください。このメソッドは、純粋なJavaScriptだけでPHPを書く必要はありません。 – Sunry

1

「ログインしていない」クラスは、vanilla Drupal 8に存在しないようです。 しかし、代わりに「ユーザーログイン」があります。ここで私は、ユーザーがログインしている場合は、カスタム「登録」メニュー項目を非表示に使用しているCSSの一行です:

body.user-logged-in a[href="/user/register"] {display: none; } 
1

のDrupal 8のためにあなたがDrupal.behaviorsを使用する場合は、設定でユーザーのUIDにアクセスすることができます:

(function($, Drupal, viewport, settings) { 
    "use strict"; 
    Drupal.behaviors.ifCE = { //the name of our behavior 
    attach: function (context, settings) { 
    var userUID = settings.user.uid; 
    //your code... 
    } 
})(jQuery, Drupal, ResponsiveBootstrapToolkit, drupalSettings); 

したがって、userUID === 0の場合、ユーザーは接続されていません。

関連する問題