Plugin Directory

Changeset 2896252


Ignore:
Timestamp:
04/09/2023 03:08:02 PM (3 years ago)
Author:
sourcefound
Message:

Version 6.4

Location:
memberfindme-login-connector
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • memberfindme-login-connector/trunk/memberfindmelogin.php

    r2786654 r2896252  
    44Plugin URI: https://membershipworks.com
    55Description: Provides single sign-on to WordPress for MembershipWorks membership system
    6 Version: 6.3
     6Version: 6.4
    77Author: MembershipWorks
    88Author URI: https://membershipworks.com
     
    1010*/
    1111
    12 /*  Copyright 2013-2022  SOURCEFOUND INC.  (email : [email protected])
     12/*  Copyright 2013-2023  SOURCEFOUND INC.  (email : [email protected])
    1313
    1414    This program is free software; you can redistribute it and/or modify
     
    179179    $act=isset($_REQUEST['action'])?$_REQUEST['action']:'login';
    180180    $msg=false;
    181     $id=empty($_POST['log'])?false:username_exists(sanitize_user($_POST['log']));
    182     if ($id!==false&&get_user_meta($id,'SF_ID',true))
    183         $id=false;
    184     if ($act!='sf_login'&&$id!==false)
    185         return; // do standard WP login
    186     if (!empty($_POST['log'])&&strpos($_POST['log'],'@')&&!empty($_POST['pwd'])&&($set=get_option('sf_set'))&&!empty($set['org'])&&defined('SF_WPL')) {
    187         $eml=trim(strtolower($_POST['log']));
    188         $pwd=trim(strtolower($_POST['pwd']));
     181    if (!defined('SF_WPL')||defined('SF_WPL_LOGIN')||empty($_POST['log'])||!strpos($_POST['log'],'@')||empty($_POST['pwd'])) {
     182        // do nothing
     183    } else if (($id=username_exists(sanitize_user($_POST['log'])))&&!get_user_meta($id,'SF_ID',true)) {
     184        // do standard WP login
     185    } else if (($set=get_option('sf_set'))&&!empty($set['org'])) {
     186        define('SF_WPL_LOGIN',true);
     187        $user_login=$_POST['log'];
     188        $user_password=$_POST['pwd'];
    189189        for($try=0;$try<3;$try++) {
    190             $rsp=wp_remote_post((empty($set['ssl'])||$set['ssl']!='2'?'https':'http').'://api.membershipworks.com/v1/usr',array('method'=>'POST','headers'=>array('from'=>isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR']),'user-agent'=>$_SERVER['HTTP_USER_AGENT'],'body'=>array('org'=>$set['org'],'eml'=>$eml,'pwd'=>$pwd)));
     190            $rsp=wp_remote_post((empty($set['ssl'])||$set['ssl']!='2'?'https':'http').'://api.membershipworks.com/v1/usr',array('method'=>'POST','headers'=>array('from'=>isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR']),'user-agent'=>$_SERVER['HTTP_USER_AGENT'],'body'=>array('org'=>$set['org'],'eml'=>$user_login,'pwd'=>$user_password)));
    191191            if (is_wp_error($rsp)) usleep(100000); else break;
    192192        }
     
    205205            add_filter('send_password_change_email','__return_false');
    206206            if (is_null($id)||$id===false) {
    207                 $id=wp_create_user($rsp['uid'],$pwd,$eml);
     207                $id=wp_create_user($rsp['uid'],$user_password,$user_login);
    208208                if (is_wp_error($id)&&$id->get_error_code()=='existing_user_email')
    209                     $id=wp_create_user($rsp['uid'],$pwd);
     209                    $id=wp_create_user($rsp['uid'],$user_password);
    210210                $doc['show_admin_bar_front']='false';
    211211            } else {
    212                 wp_update_user(array('ID'=>$id,'user_email'=>$eml)); // update email separately
    213                 wp_set_password($pwd,$id); // update password separately
     212                wp_update_user(array('ID'=>$id,'user_email'=>$user_login)); // update email separately
     213                wp_set_password($user_password,$id); // update password separately
    214214            }
    215215            if (!is_null($id)&&$id!==false&&!is_wp_error($id)) {
     
    219219                setcookie('SFSF',rawurlencode($rsp['SF']),time()+8640000,'/');
    220220                if ($act=='sf_login') {
    221                     $user=wp_signon(array('user_login'=>$rsp['uid'],'user_password'=>$pwd,'remember'=>true),force_ssl_admin()||!empty($_SERVER['HTTPS'])?true:false);
     221                    $user=wp_signon(array('user_login'=>$rsp['uid'],'user_password'=>$user_password,'remember'=>true),force_ssl_admin()||!empty($_SERVER['HTTPS'])?true:false);
    222222                    $msg=is_wp_error($user)?('Could not synchronize login '.$user->get_error_message()):'OK';
    223223                } else {
    224224                    $_POST['log']=$rsp['uid'];
    225                     $_POST['pwd']=$pwd;
     225                    $_POST['pwd']=$user_password;
    226226                }
    227227            } else if ($act=='sf_login') {
     
    241241}
    242242add_action('login_form_login','sf_login');
     243
     244function sf_authenticate(&$user_login,&$user_password) {
     245    if (!defined('SF_WPL')||defined('SF_WPL_LOGIN')||empty($user_login)||!strpos($user_login,'@')||empty($user_password)) {
     246        // do nothing
     247    } else if (($id=username_exists(sanitize_user($user_login)))&&!get_user_meta($id,'SF_ID',true)) {
     248        // do standard WP login
     249    } else if (($set=get_option('sf_set'))&&!empty($set['org'])) {
     250        define('SF_WPL_LOGIN',true);
     251        for($try=0;$try<3;$try++) {
     252            $rsp=wp_remote_post((empty($set['ssl'])||$set['ssl']!='2'?'https':'http').'://api.membershipworks.com/v1/usr',array('method'=>'POST','headers'=>array('from'=>isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR']),'user-agent'=>$_SERVER['HTTP_USER_AGENT'],'body'=>array('org'=>$set['org'],'eml'=>$user_login,'pwd'=>$user_password)));
     253            if (is_wp_error($rsp)) usleep(100000); else break;
     254        }
     255        if (!is_wp_error($rsp)&&($rsp=json_decode($rsp['body'],true))&&!empty($rsp['uid'])) {
     256            $nam=empty($rsp['nam'])?(empty($rsp['ctc'])?(empty($rsp['biz'])?'':$rsp['biz']):$rsp['ctc']):$rsp['nam'];
     257            $doc=array('nickname'=>$nam,'user_nicename'=>$nam,'display_name'=>$nam);
     258            if (isset($rsp['url'])) $doc['user_url']=$rsp['url'];
     259            $id=username_exists($rsp['uid']);
     260            if (is_null($id)||$id===false) {
     261                $id=wp_create_user($rsp['uid'],$user_password,$user_login);
     262                if (is_wp_error($id)&&$id->get_error_code()=='existing_user_email')
     263                    $id=wp_create_user($rsp['uid'],$user_password);
     264                $doc['show_admin_bar_front']='false';
     265            } else {
     266                wp_update_user(array('ID'=>$id,'user_email'=>$user_login)); // update email separately
     267                wp_set_password($user_password,$id); // update password separately
     268            }
     269            if (!is_null($id)&&$id!==false&&!is_wp_error($id)) {
     270                $doc['ID']=$id;
     271                wp_update_user($doc); // update names separately
     272                update_user_meta($id,'SF_ID',$rsp['uid']);
     273                setcookie('SFSF',rawurlencode($rsp['SF']),time()+8640000,'/');
     274                $user_login=$rsp['uid'];
     275            }
     276        }
     277    }
     278}
     279add_action('wp_authenticate','sf_authenticate',1,2);
    243280
    244281function sf_logout() {
  • memberfindme-login-connector/trunk/readme.txt

    r2824883 r2896252  
    44Tags: membershipworks, memberfindme, membership management, membership, member login, billing, member access, member content
    55Requires at least: 4.0
    6 Tested up to: 6.1.1
    7 Stable tag: 6.3
     6Tested up to: 6.2
     7Stable tag: 6.4
    88License: GPL2
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    169169= 6.3 =
    170170* Fixes issue where user sees session expired message after signing out via widget
     171
     172= 6.4 =
     173* Provides compatibility with WooCommerce login form
Note: See TracChangeset for help on using the changeset viewer.