0

I am working on angular firebase web app, in which as soon as admin login, he can create users by his own. When admin log in , he is authenticated with firebase.auth()

But what is happening is, as admin creates a new user, the current auth details(admin) gets replaced by newly created user. I want the user creation without creating a newer session

Have a look at my controller:

      app.controller('UserAdd', ['$scope','$sessionStorage','$http','$firebaseAuth', '$firebaseArray', '$location' ,'$firebaseObject', 'FBURL', function($scope,$sessionStorage,$http,$firebaseAuth,$firebaseArray, $location ,$firebaseObject, FBURL){ 
        var user = firebase.database().ref().child("users");
        $scope.user_auth_data = firebase.auth().currentUser;
        $sessionStorage.uID = $scope.user_auth_data.uid ;
        $scope.access_points=  [];
        $scope.teams = [];
        $scope.org_details = [];
        user.child($sessionStorage.uID).child("OrganizationId").on('value',function(org_id){
            $sessionStorage.org_id = org_id.val();
        })
        user.child($sessionStorage.uID).child("ImagePath").on('value',function(img){
          $scope.user_image = img.val();
        })

        //access points
        firebase.database().ref().child("organization").child($sessionStorage.org_id).child("access_points").on('value',function(access_points){
           angular.forEach(access_points.val(),function(ap,key){
                $scope.access_points.push({id:key,ssid:ap.SSID,bssid:ap.BSSID,display_name:ap.DisplayName,lat:ap.Latitude,lng:ap.Longitude});
           })


        });

        var obj = $firebaseArray(firebase.database().ref().child("organization").child($sessionStorage.org_id).child("access_points"));
        obj.$loaded(
          function(data) {

          },
          function(error) {
            console.error("Error:", error);
          }
        );

        firebase.database().ref().child("organization").child($sessionStorage.org_id).child("teams").on('value',function(teams){
           angular.forEach(teams.val(),function(team,key){
                $scope.teams.push({id:key,team_name:team.TeamName,team_leader:team.TeamLeader,channel_name:team.ChannelName});
           })
        });

        var obj = $firebaseArray(firebase.database().ref().child("organization").child($sessionStorage.org_id).child("teams"));
        obj.$loaded(
          function(data) {

          },
          function(error) {
            console.error("Error:", error);
          }
        );



        $scope.selectItem = function(){

            };

        //add user
        $scope.addUser = function() {


        firebase.auth().createUserWithEmailAndPassword($scope.Email, $scope.Password)
                .then(function(user) {
                  //adding single values in user node


                var ref = firebase.database().ref().child("users").child(user.uid);

                ref.set({
                    EmployeeId: $scope.emp_id, 
                    Contact: $scope.Contact,
                    DOB: $scope.date_of_birth,
                    Designation: $scope.Designation,
                    Email: $scope.Email,
                    FirstName: $scope.FirstName,
                    LastName: $scope.LastName,
                    OrganizationId: $sessionStorage.org_id,
                    Gender: $scope.selectedGender,
                    IsAdmin: false


                });



                  $scope.selectedAccess.forEach(function(access_values){   //adding nested access_points
                  var ref1 = firebase.database().ref().child("users").child(user.uid).child("AccessPoint").child(access_values.id);



                  ref1.set({
                    SSID: access_values.ssid,
                    BSSID: access_values.bssid,
                    DisplayName: access_values.display_name,
                    Latitude: access_values.lat,
                    Longitude: access_values.lng


                });

                });

                $scope.selectedTeam.forEach(function(team_values){    //adding nested team
                var ref2 = firebase.database().ref().child("users").child(user.uid).child("team").child(team_values.id);


                  ref2.set({
                    ChannelName: team_values.channel_name,
                    TeamName: team_values.team_name,
                    TeamLeader: team_values.team_leader


                });
                }); 
                $scope.teams.forEach(function(team_values){ 
                var ref3 = firebase.database().ref().child("organization").child($sessionStorage.org_id).child("channels").child(team_values.channel_name).child("info").child("users");

                    ref3.child(user.uid).set($scope.FirstName+" "+$scope.LastName);


                var ref4 = firebase.database().ref().child("organization").child($sessionStorage.org_id).child("user_team").child(team_values.team_name).child(user.uid);
                ref4.set($scope.FirstName+" "+$scope.LastName);



                });


                firebase.auth().sendPasswordResetEmail(user.email);

                 $location.path('/user_list');
                }).catch(function(error) {
                    console.log(error);
                });





            };


        }]);

Whats needs to be done to remain in same admin session instead of a new one?

Alex Mamo
  • 130,605
  • 17
  • 163
  • 193
Amarpreet Jethra
  • 141
  • 1
  • 11
  • There is no way to keep current authenticated user info. This is the firebase create new user function's userflow. – Liu Zhang Jun 20 '17 at 13:46
  • Possible duplicate of [Firebase logs out current user when creating a new one](https://stackoverflow.com/questions/41154181/firebase-logs-out-current-user-when-creating-a-new-one) – theblindprophet Jun 20 '17 at 13:49

0 Answers0