개발 Q&A

제목 flexi auth 사용 중 발견한 오류(?)
글쓴이 하늘치 작성시각 2015/06/05 09:56:29
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 12502   RSS
요 며칠간 flexi auth 를 적용해보고 있는데요..
회원 테이블 user_accounts 과 회원 프로필 테이블 demo_user_profiles 은 각각의 pk(user_accounts.uacc_id) 와 fk(demo_user_profiles.upro_uacc_fk) 로 연결되어 있지요.

회원 디비를 직접 일부 삭제도 하고 해서 서로 연결이 안되는 회원 데이터가 생겼는데, 어쩌다 보니 그 몇몇 회원의 정보를 수정해봤더니 적용이 안되거나 엉뚱한 회원이 수정되는 현상이 벌어졌습니다.

결론은, user_accounts 에는 pk(user_accounts.uacc_id) 값을 찾아서 회원 수정 내용을 저장시키는데,
이 때, demo_user_profiles 에는 fk(demo_user_profiles.upro_uacc_fk) 값이 아닌, 자기 pk(demo_user_profiles .upro_id)를 찾아서 저장시키더라고요.

어찌 어찌 찾다보니,  /models/flexi_auth_model.php 의 update_custom_user_data() 함수안에 뭔가 실마리가 있는 거 같네요.
 
	public function update_custom_user_data($table = FALSE, $row_id = FALSE, $custom_data = FALSE)
	{
		if (! is_array($custom_data) || empty($this->auth->database_config['custom']))
		{
			return FALSE;
		}

		// Loop through user custom data table(s)
		foreach ($this->auth->database_config['custom'] as $custom_table => $table_data)
		{
			$identifier_id = FALSE;

			// Get tables primary key, if not submitted, try to match the rows secondard key column.
			if ($row_id && $table_data['table'] == $table)
			{
				$identifier_id = $row_id;
				$identifier_col = $table_data['primary_key'];
			}			
			else if (isset($custom_data[$table_data['primary_key']]))
			{
				$identifier_id = $custom_data[$table_data['primary_key']];
				$identifier_col = $table_data['primary_key'];
				unset($custom_data[$table_data['primary_key']]);
			}
			else if (isset($custom_data[$table_data['foreign_key']]))
			{
				$identifier_id = $custom_data[$table_data['foreign_key']];
				$identifier_col = $table_data['foreign_key'];
				unset($custom_data[$table_data['foreign_key']]);
			}

		}

	}



일단, 위 소스에서 primary_key 와 foreign_key 의 순서를 바꾸면 해결되기는 합니다만, 미봉책인지라..
더 파보고 싶은데, 시간이 부족하네요;
혹여 해결하신 분이 계시면 알려주셔요~



덧. 처음에는 제가 소스를 잘못 만져서 그런 건가 싶었는데, 새로 세팅해서 해봐도 그렇더군요.
아마도 데모 만드신 분이 회원 가입할 때마다 프로파일이나 주소 데이터가 같은 id 값으로 계속 쌓여서 놓친 오류가 아닐까 싶기도 합니다..
음.. 어떻게 보면, 디비에 직접 손을 대지 않는 이상, 전혀 문제가 되지 않을 것이었는지도 모르겠네요;;
 
 다음글 혹시 PHPStorm 에서 웹서버 설정 하실수 있나요?... (4)
 이전글 Jquery, html append사용관련 질문있습니당...

댓글

한대승(불의회상) / 2015/06/05 13:00:54 / 추천 0
좋은 정보 감사 합니다.
시간나면 저도 함 파봐야 겠네요. ^^