자유게시판

Rhymix AI로 코딩해봤네요 :)

2024.06.28 11:13
475
0

강제로그인 기능을 AI로 구현해봤네요 :)
http://your-site.com/?mid=member&act=dispMemberForceLogin&user_id=example_user

잘되네요~~

memberView 클래스에 추가할 dispMemberForceLogin 메서드

function dispMemberForceLogin() {
    $user_id = Context::get('user_id');
    if(!$user_id) {
        return new BaseObject(-1, 'msg_invalid_request');
    }

    $oMemberController = getController('member');
    $output = $oMemberController->procMemberForceLogin($user_id);

    if(!$output->toBool()) {
        return $output;
    }

    $this->setMessage('success_forced_login');
    $this->setRedirectUrl(getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', ''));
}


memberController 클래스에 다음과 같은 procMemberForceLogin 메소드

 

function procMemberForceLogin($user_id) {
    $args = new stdClass();
    $args->user_id = $user_id;
    
    // 사용자 정보 가져오기 (아이디/이메일/전화번호 중 어떤 것을 사용했는지 확인)
    $config = MemberModel::getMemberConfig();
    if (strpos($user_id, '@') !== false && (!$config->identifiers || in_array('email_address', $config->identifiers))) {
        $member_info = MemberModel::getMemberInfoByEmailAddress($user_id);
    } elseif (strpos($user_id, '@') === false && $config->identifiers && in_array('phone_number', $config->identifiers)) {
        if(preg_match('/^\+([0-9-]+)\.([0-9.-]+)$/', $user_id, $matches)) {
            $user_id = $matches[2];
            $phone_country = $matches[1];
        } elseif($config->phone_number_default_country) {
            $phone_country = $config->phone_number_default_country;
        }

        if($phone_country && !preg_match('/^[A-Z]{3}$/', $phone_country)) {
            $phone_country = Rhymix\Framework\i18n::getCountryCodeByCallingCode($phone_country);
        }
        
        $member_info = MemberModel::getMemberInfoByPhoneNumber($user_id, $phone_country);
    } else {
        $member_info = MemberModel::getMemberInfoByUserID($user_id);
    }
    
    if (!$member_info || !$member_info->member_srl) {
        return new BaseObject(-1, 'msg_not_exists_member'); // 사용자 정보가 없을 경우 에러 반환
    }

    // 로그인 처리
    $args->member_srl = $member_info->member_srl;
    $output = executeQuery('member.updateLastLogin', $args);
    self::clearMemberCache($args->member_srl);

    // 세션 정보 설정
    Rhymix\Framework\Session::login($member_info->member_srl);
    $this->setSessionInfo();

    return new BaseObject(0, 'success_forced_login');
}

 

댓글 7

  • 2024.06.28 11:25 #1829368
    그냥 아는 아이디 하나 얻어걸리면 관리자 권한도 박탈 시킬 수 잇을 코드인데요 ㄷㄷ
  • 2024.06.28 13:05 #1829383
    AI로 가볍게 한거라 시간이 나면정교하게 해봐야겠네요 ㅎ
  • 2024.06.28 12:58 #1829378
    ㄷㄷㄷㄷㄷㄷㄷㄷ
  • 2024.06.28 13:06 #1829387
    IT 20년차 커리어의 분기점이네요 새시대가 열렸습ㄴ다 활짝!
  • 2024.06.28 13:10 #1829391
    AI 라이믹스 코딩 관심 있으신분들은 연락주세요 이것저것 하고 싶은것들이 많네요 수익화 사업같은것도 이제 제대로 해볼수 있을듯 싶어요 워낙 아키텍쳐가 빵빵한 cms툴이라
  • 2024.06.29 05:32 #1829444
    간혹 특정 회원에게만 문제가 발생할때 유용할수 있겠네요.
    다만 본문대로라면 user_id 입력만으로 로그인하게 만드는 백도어가 되니; admin 전용액션으로 만들고 최소한의 검증절차를 추가해야 합니다.
  • 2024.06.29 08:20 #1829450
    네 그렇죠. 만드는 사람의 의지가 중요하겠죠~~ 당연히 상황에 따른
    보여주고 싶었던 것은 보안보다는 라이믹스 코드도 코딩하지 않고 코드를 프롬프트로 만들어서 적용해도 돌아간다 정도여서 :) 실제 사용시에는 보안적인 부분을 더 집어넣어서 사용하면 될거구요..당연히

    AI시대에 라이믹스에 오는 커뮤니티 회원들도 더 늦기전에 AI 베이스로 갈아타셔야 한다 라는 메세지예요.