수동으로 생성된 스테이징 사용자?

수동으로 단계별(staged) 사용자를 만들 수 있을까요? rake를 사용하면 물론 일반 사용자를 만들 수 있습니다. 전지전능한 AI는 불가능하다고 했는데, 그 말을 믿고 있지만 그래도…

아마도 제가 하려는 일을 설명해야 할 것 같습니다.

저는 고객이 예약을 할 수 있는 WordPress/WooCommerce 환경을 운영하고 있습니다. 고객은 WordPress가 제공하는 양식을 통해 추가 정보를 보내게 됩니다. 해당 양식은 (제) 그룹 메일함으로 전송됩니다. 하지만 Amazon SES를 사용하고 있기 때문에, 발신인으로 고객의 이메일 주소를 사용할 수 없습니다. 그렇게 하면 해당 발신인을 수동으로 승인해야 하기 때문이며, 이는 선택지가 아닙니다. 그래서 저는 제 WordPress 주소에서 온 이메일을 받게 됩니다.

이제, 제 쪽에서 거의 노력을 들이지 않거나 자동으로 해당 PM(개인 메시지) 주제를 고객의 이메일과 연결해야 합니다. 그리고 제 제한된 지식으로 생각해 낸 유일한 해결책은 소유권 변경이었습니다. 하지만 이를 위해서는 사용자가 필요합니다.

왜 OAuth를 사용해 해당 사용자를 만들지 않는 걸까요? WordPress에서 계정을 생성해야 하니까요. 하지만 저는 어떻게 해야 하는지 이해할 수 없거나, 여기에서 적절한 주제를 찾지 못한 것 같습니다. 제안되는 SSO(단일 로그인)는 다른 모든 로그인 옵션을 가로채기 때문에 자주 선택지가 되지 못합니다.

컨테이너에 진입하려면 ./launcher enter app을 입력해 보세요.

그 다음 rails 콘솔로 이동합니다:

rails c

새로운 사용자를 생성합니다:

new_user = User.create

그 후 … 처음에는 실패할 것입니다. 저장(즉, 인스턴스화)을 시도해 보세요.

new_user.save!

잘못된 속성을 채우는 방법에 대한 지침을 따르며 저장할 때까지 시도합니다.

예를 들어

new_user.username = 'frrank'

를 입력하면 하나의 검증 오류를 넘어갈 수 있습니다.

이 과정을 반복하면 결국 사용자가 저장됩니다.

new_user를 입력하여 진행 상황을 확인할 수 있지만, 모든 필드를 채울 필요는 없으며 검증 문제가 있는 필드만 채우면 된다는 점을 알아두세요.

저장까지 성공하기 전까지는 new_user가 임시 객체이므로, 저장하는 것을 잊지 마세요.

궁금한 게 있어요… staged: false라는 게 있잖아요.

실제 스테이징된 사용자에 대한 모든 데이터를 어떻게 볼 수 있을까요? 아니면 지금 너무 깊은 수렁에 빠진 거고, 필사적으로 뭔가 하려다 결국 계정 생성을 통해 수동으로 사용자를 만들어야 하는 건가요? :joy:

User.where(staged: true).first(10)

제발, Discard는 단순한 정말 삭제할까요? 확인이라도 해 주면 안 될까요 :man_facepalming:

다시 말씀드리지만, 제가 실제 사례로 작업하는 실수를 저질렀기 때문에 이 기능이 제대로 작동하는지 테스트할 수 없습니다. 하지만 새로 스테이징된 사용자는 있습니다.

제가 한 작업은 다음과 같습니다:

newuser = User.create
newuser.username = 'frank'
newuser.staged = true
newuser.email = 'frank@example.tld'
newuser.save!

이 방법도 작동할 것 같지만, 아직 시도해 보지 않았습니다.

newuser = User.create!(username: "frank", staged: true, email: "frank@example.tld")

네, 그 방법도 잘 작동할 거예요.

다만… PM의 소유권을 스테이징된 사용자로 변경할 수 없어요 :man_facepalming:

그래서, OAuth 관련 작업을 시작하지 않는 한, 유일한 선택지는 해당 사용자의 이메일로 PM을 보내는 거예요. 제 이해가 맞다면, 이 경우에도 동일한 스테이징이 일어나겠죠.

아니면 그 사용자를 승인하는 방법도 있어요. 이건 선택지가 되긴 합니다. 하지만 동의 없이 하게 되니 그렇게 하고 싶지는 않아요.

하지만 이제 Rails로 사용자를 생성/편집하는 기본기는 알게 되었어요 :winking_face_with_tongue: 이것도 승리죠. 게다가 아무것도 할 수 없는 스테이징된 사용자까지 하나 만들었으니 말이에요.

newsuser.destroy

(참고: "delete"가 아님)

제가 찾은 또 다른 방법은 다음과 같습니다:

1) 카테고리 생성… (저는 이름을 'Inbox’로 지었습니다)

2) 해당 카테고리의 설정에서 "계정이 없는 익명 사용자로부터 이메일 수락"을 활성화합니다

3) 해당 이메일 주소로 이메일을 보냅니다

잘 이해가 안 돼요 :thinking: 어떻게 이상한 주소에서 이메일을 보내서 그 스테이징 사용자를 만들 수 있나요? 그리고 그룹 주소를 사용하는 것과 뭐가 다른가요?

저는 제가 사용하는 특정 방식(내 시계에서 이메일을 보내 내 개인 포럼에 새 주제를 생성하는 것)에 맞춰 단계별로 사용자를 수동으로 만드는 가장 간단한 방법만을 찾아보았습니다. 다른 방법들도 많이 있을 거라고 생각합니다!

(직접 시도해 보셨나요?)

아니요, 제 것이 아닌 주소를 이용해 이메일을 보내는 방법을 아직 이해하지 못했기 때문입니다.

위 예시에서는 매일 사용하는 내 일반 이메일 주소에서…

…

내가 만든 새로운 Inbox 카테고리 설정에 입력한 이메일 주소로 이메일을 보냈습니다. 이 경우(위 예시와 같이) inbox@forum.mysite.com으로, 물론 이 또한 내가 소유한 이메일 주소입니다(도메인이 내 포럼의 도메인과 같기 때문입니다).

하지만 Jagster는 자신의 계정에 대한 스테이지 사용자를 생성하길 원합니다. 그는 해당 사용자를 대신해 이메일을 보낼 수 없습니다.

이 경우 이메일 주소로 개인 메시지를 보내는 방식이 효과적일 수 있습니다 :thinking:

실제 사용자에게 포럼으로 이메일을 보내달라고 요청할 필요 없이, 일종의 사전 TL(팀 리더) 개념의 단계적 사용자 계정을 만드는 방법에 대해 질문드렸습니다.

다시 한번 거대한 언어 장벽에 부딪힌 것 같습니다. (우리는 그 AI 번역기를 정말 절실히 필요로 하죠) :joy:

가상의 사용자, 즉 단계적 계정이나 등록된 계정을 만드는 것은 iPhone으로 정말 쉬운 작업입니다.

결국 문제를 해결했습니다. 동시에 제가 무엇을 하려 했는지를 설명할 기회도 얻었습니다. 하지만 다시 말하지만, 제가 해결하려던 진짜 문제는 스테이징 사용자를 만드는 것이 아니었습니다. 후속 작업을 제 WooCommerce와 연결하는 것이었죠. 그래서 요즘 흔히 하는 것처럼 하나의 해결책을 찾아서 그 하나에 대해 질문했습니다. 하지만 이는 의도적이었습니다. 발신인이 해당 사용자인 상태에서 WooCommerce에서 이메일을 보내는 방법을 어떻게 질문할 수 있겠는가, 그리고 Amazon SES는 그런 일을 하지 않는다는 것을 알고 있었기 때문입니다. 또는 WordPress 사용자를 포럼과 자동으로 동기화하는 방법을 어떻게 질문할 수 있겠는가, 왜냐하면 그것은 사실상 불법적인 행위이기 때문입니다.

따라서 수동으로 스테이징 사용자를 만드는 것이 제가 떠올릴 수 있는 유일한 방법이었죠 :smirking_face:

Jagster의 사용 사례에 대한 구체적인 라우팅 요구사항을 완전히 이해하지는 못하겠습니다.

하지만 위에서 설명한 대로, 제 Discourse 인박스(Inbox) 카테고리로 이메일이 수신되고 있습니다. 문제는 제가 그 이메일 주소에서 메일을 보내지 못하는 주소에서 온다는 점입니다. 이 메일들은 제 Gmail 계정으로 연락하는 고객에게서 온 것입니다.

저는 이렇게 설정했습니다…

Gmail 계정에서 해당 고객의 이메일 주소로 수신되는 모든 메일을 감지하는 필터를 설정했습니다. 이 필터는 Gmail에 사본을 유지하면서, 해당 메일들을 제 Discourse 인스턴스에서 인박스 카테고리로 메일을 수신하도록 지정된 이메일 주소로 전달합니다.

대신(또는 추가로) 인박스 카테고리의 카테고리 설정에서 "메일링 리스트 미러링"을 활성화하고, 저(그리고 선택적으로 다른 사용자들)가 해당 리스트에 구독할 수도 있을 것 같습니다.

:exploding_head:

문제는 해당 사용자들이 아무것도 보내지 않았다는 것입니다. 만약 보내주었다면, 저에게는 많은 옵션이 있었을 텐데, 그룹 메시지는 저에게 가장 실용적인 해결책입니다.

다시 실제 문제로 돌아가겠습니다. 사용자가 서비스를 구매하면 WooCommerce에서 플러그인이 생성한 양식 링크를 받게 됩니다. 아니, 저는 그걸 위해 Discourse를 사용할 수 없습니다. 왜냐하면 아시다시피, 그들은 어떤 종류의 사용자도 아니기 때문입니다. 저는 그 양식을 Discourse로 보낼 수는 있지만, 승인된 주소에서만 가능하며, 고객의 주소는 SES에서 승인되지 않았고 앞으로도 승인되지 않을 것입니다. 그래서 저는 이제 개인 메시지(PM)를 통해 해당 고객과 양식을 제출한 사람을 어떻게든 연결해야 합니다. 그렇게 하면 포럼에서 그 고객과 계속 진행할 수 있습니다. 포럼은 다양한 도구를 제공하기 때문입니다.