PR

【2/29】ヤマダゲストログイン機能 #3367

wada opened this at 2024-02-14T15:59:16; closed

Description

opened by wada at 2024-02-14T15:59:16; updated 2024-03-06T11:35:00

概要

ヤマダゲストログイン機能

対応

ゲストログイン時はguest=1をcookie登録
ゲストから正規ユーザになった後、sessionが切れた際に、
・cookieからguest=1を削除
・user_platformのpuidを新sapkeyに更新
・更新情報をログテーブルに追加

テーブル

CREATE TABLE `log_yamada_puid_transition` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_no` int(11) unsigned NOT NULL,
  `puid` char(255) DEFAULT NULL,
  `puid_guest` char(255) DEFAULT NULL,
  `reg_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
#カラム追加
ALTER TABLE `user_platform` ADD `guest_flg` tinyint(4) unsigned DEFAULT '0';
UPDATE user_platform SET guest_flg = 0 WHERE ISNULL(guest_flg);

テスト方法、確認した内容

APIを使用しない確認方法

sapkey切り替え

1. header情報にsapkeyを追加

2. ソースコードの更新
SubFunc_yamada.inc/S_yamada_Login()で以下コメントアウト
・L11: return S_yamada_LoginWithoutPlatform();
以下のmemcacheを空にする
・'user_no_'.$pt

YamadaWithoutAPI/checkToken()で以下調整
・sapkey:新しいsapkeyを設定(任意の文字列)
・guest:確認内容に応じてtrue/falseに変更
・sapkeyOld:headerに設定してあるsapkeyを設定

3. urlパラメータにtokenを追加してアクセス

切り替え後確認

以下のテーブル情報を確認
・user_platformのpuidを新しいsapkeyへ更新
・log_yamada_puid_transitionにログ作成

header情報のsapkeyを新しいsapkeyに更新
以下のmemcacheを空にする
・'user_no_'.$pt
再度アクセスしてプレイできるか

TODO

  • [x] 開発確認
wada add_label at 2024-02-19T14:01:31: レビュー待ち
wada change_title at 2024-02-19T14:01:40: [WIP]ヤマダゲストログイン機能 【2/29】ヤマダゲストログイン機能

Comment

#33332 by wada at 2024-02-19T14:01:46; updated 2024-02-19T14:01:46

@kouho
レビューお願いします。

Comment

#33370 by kouho at 2024-02-21T18:16:58; updated 2024-02-21T18:16:58

@wada
S_yamada_LogGuestTransition関数が見つかりませんでした。
S_yamada_LogPuidTransition関数どちらかに名前を合わせる必要があると思います。

Comment

#33371 by kouho at 2024-02-21T18:31:42; updated 2024-02-21T18:31:42

@wada
log_yamada_puid_transitionは1ユーザー最大1レコード入る想定ならuser_noはUNIQUEキーを入れても良いのではと思いました

Comment

#33372 by wada at 2024-02-21T19:07:07; updated 2024-02-21T19:07:07

@kouho
> S_yamada_LogGuestTransition関数が見つかりませんでした。

修正しました。

Comment

#33373 by wada at 2024-02-21T19:07:34; updated 2024-02-21T19:07:34

@kouho
> log_yamada_puid_transitionは1ユーザー最大1レコード入る想定ならuser_noはUNIQUEキーを入れても良いのではと思いました

今のところ想定していないので、対応予定はありません。

Comment

#33374 by kouho at 2024-02-22T09:52:33; updated 2024-02-22T09:52:33

@wada
修正確認しました

Comment

#33377 by kouho at 2024-02-22T12:01:21; updated 2024-02-22T12:01:21

@wada
最低限のログイン処理はできていそうですが、ゲストログインのユーザーかどうかをcookieだけでなくゲーム側のDBにも残しておけませんか?

kouho add_label at 2024-02-22T14:51:58: コメントあり

Comment

#33382 by kouho at 2024-02-22T14:53:57; updated 2024-02-22T14:53:57

@wada
log_yamada_puid_transitionのデータの残し方はpuid_guestにゲストログインのsapkeyが入る想定ではなく、puid側にゲストログイン時のsapkeyが入るのでしょうか?
フィールド名からデータの入り方が逆かと思いました

Comment

#33385 by kouho at 2024-02-22T17:20:11; updated 2024-02-22T17:20:11

ゲーム側対応必要箇所

・認証周り
 和田さんがこのプルリクで実装済み

・毎日のヤマダポイント配布
 ゲストユーザーの場合は受取をできないように

ゲーム側で対応不要

・課金部分
 現状のログイン画面へのリンクで問題なし

Comment

#33396 by wada at 2024-02-26T11:52:41; updated 2024-02-26T11:52:41

@kouho
最低限のログイン機能のみ実装する認識なのですが、以下ファイルの情報以外で@kouho さんが認識していることがあれば教えてください。

https://trello.com/1/cards/65c5d9e5ebd936174433f3e4/attachments/65c5e229d6c7471da95139f9/download/%E3%82%B2%E3%82%B9%E3%83%88%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E8%AD%B0%E4%BA%8B%E9%8C%B2.txt

Comment

#33415 by kouho at 2024-02-28T10:43:49; updated 2024-02-28T10:43:49

@wada
元々和田さんの認識のとおりでしたが、他の導線周りが残ることについて確認できておりませんでした。
対応が足りているかどうかというところの確認を2/28 13:00からのYGMTGでも確認いたします。

Comment

#33421 by kouho at 2024-02-28T13:55:04; updated 2024-02-28T13:55:04

@wada
ログイン機能以外では以下の表示周りの対応が必要でした。

①ゲストログインの場合はデイリーミッションのヤマダポイントの受取のボタンをグレーアウトして押せないように

②ヤマダポイントキャンペーンの告知にゲストログインの場合はポイントを獲得できない旨の表示を追加

Comment

#33466 by wada at 2024-03-01T13:46:16; updated 2024-03-01T13:46:16

@kouho
把握できている情報量が違うよう(この結論に至った過程がわからない)なので、
以下の対応が必要な理由を、原因と合わせて教えてください。

> ログイン機能以外では以下の表示周りの対応が必要でした。
> ①ゲストログインの場合はデイリーミッションのヤマダポイントの受取のボタンをグレーアウトして押せないように
> ②ヤマダポイントキャンペーンの告知にゲストログインの場合はポイントを獲得できない旨の表示を追加

Comment

#33467 by kouho at 2024-03-01T13:53:36; updated 2024-03-01T13:53:36

@wada
①について
ゲストログインではヤマダポイントやヤマダコインは獲得できない仕様であると聞いております。そのため、
ゲストログイン状態でパイレーツパスのデイリーミッションのヤマダポイントを受け取った際に受け取れた表示は出て実際に受け取れていないから問題であると判断してヤマダポイントの受取のボタンをグレーアウトする必要があるかと思いました。

②について
ゲストログインではヤマダポイントやヤマダコインは獲得できない仕様であると聞いておりますので、ゲストログインの場合は獲得できずログインすると獲得できる旨の表示が必要であると考えています。

ゲストログインでヤマダポイントやヤマダコインが獲得できない旨の記載箇所

APi資料内に赤文字の※にゲスㇳログインの場合についての記載が追加されております。
http://gpf-doc.ymdunisys.jp/?page_id=520
http://gpf-doc.ymdunisys.jp/?page_id=529

Comment

#33469 by wada at 2024-03-01T14:02:59; updated 2024-03-01T14:02:59

@kouho
共有ありがとうございます。
一度、実装すべき内容を整理します。

Comment

#33473 by kouho at 2024-03-01T14:05:50; updated 2024-03-01T14:05:50

ありがとうございます。

Comment

#33474 by wada at 2024-03-01T16:31:08; updated 2024-03-01T16:31:08

@kouho
対応内容をまとめました、過不足ないか確認お願いします。
https://docs.google.com/spreadsheets/d/1FFVk4Uj3r_pMEA8iifHdGJgJ9r2_toRd-lEIObmbpCY/edit#gid=0

Comment

#33475 by kouho at 2024-03-01T17:27:30; updated 2024-03-01T17:27:30

@wada
対応内容のまとめありがとうございます。確認いたしました。和田さんのまとめていただいた内容で過不足はなさそうです。

Comment

#33488 by wada at 2024-03-04T17:36:08; updated 2024-03-04T17:36:08

@kouho
以下対応しました。

user_platformテーブルにゲストカラム追加
ゲストユーザのコイン減算とポイント加算APIの利用制限
パイレーツパスのヤマダPクエストの受取を制限
・モーダルは対応に時間がかかるため不採用
ゲスト状態の不整合を回避するため、島ページでのゲスト状態更新を追加

PresentBoxManagerのtodoは、呼び出し前にチェックが入るので対応保留

Comment

#33495 by kouho at 2024-03-04T18:50:20; updated 2024-03-04T18:50:20

@wada
対応ありがとうございます。対応確認いたしました。

kouho add_label at 2024-03-04T18:50:23: 皇甫 LGTM
kouho delete_label at 2024-03-04T18:50:27: コメントあり
wada merge at 2024-03-06T11:34:56: 【2/29】ヤマダゲストログイン機能
wada close at 2024-03-06T11:34:56: Close
wada delete_branch at 2024-03-06T11:35:00: yamada_guest_login

Commit range

base67defbe27da16035e75c06ea5f240efd50e70e16
headf47de753b2853e01437f58819332090e104386ae
base branchjolly/jr-web:master
head branchjolly/jr-web:yamada_guest_login

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed12 filesView patch
statusfile
modifieddatabase/jrye.sql
modifiedlib/SubFunc.inc
modifiedlib/SubFunc/SubFunc_yamada.inc
modifiedlib/ajax/friend_detail.inc
modifiedlib/class/platform/yamada/YamadaPlatformService.class.php
modifiedlib/class/platform/yamada/YamadaWithoutAPI.class.php
modifiedlib/class/present_box/PresentBoxManager.class.php
modifiedlib/class/season_pass/SeasonPass.class.php
modifiedlib/models/Yamada_point.php
modifiedlib/models/Yamada_point_pass_quest.php
modifiedpublic_html/template/SeasonPass-Home.tpl
modifiedpublic_html/template/header_sp.tpl
Patch body is stored as a separate file to keep this page lightweight.