ホーム > フォーラム > 開発 > コア開発 > ユーザ承認まわりのバグ2点ほど

ユーザ承認まわりのバグ2点ほど
投稿者: suin | 投稿日時: 2008/10/15 16:42 | 閲覧: 14388回
suin
ご無沙汰しています。suinです。

ユーザ承認まわりをいじっていて、TYPOらしきものに気がついたので投稿します。

levelの判断方法がおかしい点


SourceForge.netのフォーラムにも投稿したのですが、英語がうまくないので、こちらに詳しく書かせていただこうかと思います。

/modules/user/actions/UserActivateAction.class.php の 53行目
if ($this->mObject->get('level') > 1) {
	$controller->executeRedirect(XOOPS_URL . '/user.php', 3, _MD_USER_MESSAGE_ACONTACT);
}

ここで、levelを比較していますが、
level = 1 でも承認済みの状態だと思いますので、
ここでは、
if ($this->mObject->get('level') >= 1)
にするか、あるいは
if ($this->mObject->get('level') > 0)
のようにするのが正しいと思いますが、違いますでしょうか?

このままですと、承認キーのURLに2度目のアクセスをしたときでも、「承認が完了しました。」と出ます。

Activationの際にユーザがすでに複数のグループに入っている場合のバグ


Activation以前にすでに複数のグループにユーザが属している(レアなケースだと思いますが)と、Activationを行った際に、groups_users_linkに重複したリンク情報が登録されてしまうようです。

ユーザ登録直後では、
linkid	|   groupid	| uid
114 	|   2 		| 31
128 	|   6		| 31
だったのが、Activationを終えてみると
linkid	|   groupid	| uid
114 	|   2 		| 31
128 	|   6		| 31
129	|   6		| 31
になったりします。

いろいろ探ってみたところ、/modules/user/class/users.phpの179行目に問題があるようです。
$oldLinkArr =& $handler->getObjects(new Criteria('uid', $user->get('uid')), $force);

ここの$forceは省略されるべきではないでしょうか?
getObjectsの第二引数は$limitのはずです。

$force = true になっていると LIMIT 1 になってしまい、グループ・ユーザのリンク情報をすべてとってこれないため、groupid=2以外のグループが増殖してしまうようです。

コメント(3)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: ユーザ承認まわりのバグ2点ほど 
投稿者: onokazu | 投稿日時: 2008/10/15 21:47
onokazu
> levelの判断方法がおかしい点

これに関しては確かにバグみたいですね。2.1.6でもそのままの模様です。

> Activationの際にユーザがすでに複数のグループに入っている場合のバグ

こちらはバグ#1978064の修正としてgroup_users_linkにgroup_id/uidのユニークキーが追加されたので、legacyモジュールを1.06へとアップグレード後は重複データが作られることはなくなると思いますが、確かにバグですね。
Re: ユーザ承認まわりのバグ2点ほど 
投稿者: onokazu | 投稿日時: 2008/10/15 22:15 | 親コメント: #19166
onokazu

> Activationの際にユーザがすでに複数のグループに入っている場合のバグ

こちらはバグ#1978064の修正としてgroup_users_linkにgroup_id/uidのユニークキーが追加されたので、legacyモジュールを1.06へとアップグレード後は重複データが作られることはなくなると思いますが、確かにバグですね。


に関してバグ#1978064に$forceパラメータの削除についてコメント追加しておきました。
Re: ユーザ承認まわりのバグ2点ほど 
投稿者: suin | 投稿日時: 2008/10/16 11:25 | 親コメント: #19167
suin

> levelの判断方法がおかしい点

これに関しては確かにバグみたいですね。2.1.6でもそのままの模様です。


X2ではなかったバグだなと思っていたら、Is this a bug on activation?にGIJOEさんがコメントされていました。

Activationの際にユーザがすでに複数のグループに入っている場合のバグ

こちらはバグ#1978064の修正としてgroup_users_linkにgroup_id/uidのユニークキーが追加されたので、legacyモジュールを1.06へとアップグレード後は重複データが作られることはなくなると思いますが、確かにバグですね。

TYPOを眺めながらユニークキーがあればなあと思っていたところでしたが、追加されたとのことでよかったです。

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top