Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

외부에서 정보가 바뀔 경우 (e.g., GitHub username 이 바뀐다던지, 회원을 탈퇴할 경우) members.yaml 파일과 차이가 생깁니다. #14

Open
kkweon opened this issue Sep 11, 2021 · 8 comments

Comments

@kkweon
Copy link
Member

kkweon commented Sep 11, 2021

역시 synchronization 문제는 어렵군요.


yaml 파일을 생성하는 바이너리를 제공해 1주일마다 한번씩 돌리게 하거나 혹은 해당 바이너리를 사용하여 유저가 로컬에서 수동으로 업데이트 후 푸시하도록 하는 방법 정도가 어느정도 간단한 타협 같네요.

@bloomspes
Copy link
Contributor

아니면 외부에서 정보가 바뀌는 경우 한해서 유효성 검사를 하고, 이런 경우에 관리자로 하여금 메시지를 보내도록 하는 것은 어떨까요?

@kkweon
Copy link
Member Author

kkweon commented Sep 11, 2021

외부에서 정보가 바뀌는 경우 유효성 검사를 어떻게 하나요?

@mrchypark
Copy link
Member

@mrchypark
Copy link
Member

현재 문제는 github username이 변경되는 경우인데요. 문제상황을 생각해보면,

  1. 등록된 사용자가 이름을 변경함
  2. 등록 요청한 사용자가 과거 이름을 제공하여 현재 변경된 상태임

을 상정할 수 있을 것 같습니다.

이 때 예상되는 결과는

  1. 유저이름이 변경되어 현재 존재하지 않는 이름으로 나옴
  2. 변경이후 다른 사람이 이름을 사용하여 다른 사람으로 바뀜

일 것 같은데요.

1 번의 경우 사용자가 없으니 에러가 발생할 테고, 에러 알림을 통해 파일을 수동 수정하는 것이 맞지 않을까 싶습니다.
2 번은 문제인거 같은데요. github의 users api를 확인해보니 아래와 같이 나옵니다.

curl \
➜   -H "Accept: application/vnd.github.v3+json" \
➜   https://api.github.com/users/mrchypark
{
  "login": "mrchypark",
  "id": 6179259,
  "node_id": "MDQ6VXNlcjYxNzkyNTk=",
  "avatar_url": "https://avatars.githubusercontent.com/u/6179259?v=4",
  "gravatar_id": "",
  "url": "https://api.github.com/users/mrchypark",
  "html_url": "https://github.com/mrchypark",
  "followers_url": "https://api.github.com/users/mrchypark/followers",
  "following_url": "https://api.github.com/users/mrchypark/following{/other_user}",
  "gists_url": "https://api.github.com/users/mrchypark/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/mrchypark/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/mrchypark/subscriptions",
  "organizations_url": "https://api.github.com/users/mrchypark/orgs",
  "repos_url": "https://api.github.com/users/mrchypark/repos",
  "events_url": "https://api.github.com/users/mrchypark/events{/privacy}",
  "received_events_url": "https://api.github.com/users/mrchypark/received_events",
  "type": "User",
  "site_admin": false,
  "name": "ChanYub Park",
  "company": "SKT",
  "blog": "https://mrchypark.github.io/",
  "location": "Seoul, South Korea",
  "email": null,
  "hireable": true,
  "bio": "Tool maker with R & Docker enthusiast",
  "twitter_username": "mrchypark_",
  "public_repos": 109,
  "public_gists": 36,
  "followers": 303,
  "following": 542,
  "created_at": "2013-12-13T15:05:27Z",
  "updated_at": "2021-09-17T05:10:26Z"
}

아마 id와 node_id 가 고유 번호인 것으로 보입니다.
아래 조직 멤버 리스트 api를 확인하면 users api 와 같은 결과를 주는 것으로 보아, 이 부분을 깃에 푸쉬해서 체크할 때 사용하면 좋을 것 같습니다.

 curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/codingpot/members
[
  {
    "login": "deep-diver",
    "id": 26025527,
    "node_id": "MDQ6VXNlcjI2MDI1NTI3",
    "avatar_url": "https://avatars.githubusercontent.com/u/26025527?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/deep-diver",
    "html_url": "https://github.com/deep-diver",

@mrchypark
Copy link
Member

그러니 검증이 필요하다면 id나 node_id를 깃에 푸쉬해두고 사용하면 될 것 같습니다.

검증이 꼭 필요한 단계는 아마 기존 사용자가 이름을 변경 > 다른 사용자가 그 아이디를 사용 만 해당할 것 같습니다.
다른 단계들은 그냥 실패해서 수동으로 정보를 확인하고 고치게 하는 것이 좋지 않을까 싶어요.

@kkweon
Copy link
Member Author

kkweon commented Sep 17, 2021

분석 감사합니다.

으 역시 푸시 하는건 왠지 안땡기네요.
커밋 푸시하는건 유저 visible 해야지 액션에 숨겨서 encapsulation 은 하기 꺼려지네요.

@mrchypark
Copy link
Member

@kkweon 메타 데이터 관리 정도이고, 사용사례가 잘못된 사람을 초대하는 정도라서 안해도 될꺼 같아요.

유저 이름 변경에 대한 대응으로 그냥 실패하고 알림은 어떻게 생각하시나요?

@kkweon
Copy link
Member Author

kkweon commented Sep 17, 2021

좋습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants