Force Lock Camera Straight Forward

.

I have it moving into position correctly, but I can not, for the life of me, get that camera to behave correctly. Any ideas?

        //Move player behind door.
        float moveSpeed = 2.0f;
        Vector3 aPos = transform.position;
        Vector3 bPos = door.transform.position + door.transform.forward * -1.5f;
        float stepPos = (moveSpeed / (aPos - bPos).magnitude) * Time.fixedDeltaTime;
        float tPos = 0f;

        //Swing player view.
        float viewSwingSpeed = 100f;
        Vector3 aRot = transform.rotation.eulerAngles;
        Vector3 bRot = Quaternion.LookRotation (door.transform.position).eulerAngles;
        float stepRot = (viewSwingSpeed / (aRot - bRot).magnitude) * Time.fixedDeltaTime;
        float tRot = 0f;

        //Camera cam = transform.gameObject.GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController> ().m_Camera;
        //transform.gameObject.GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController> ().m_MouseLook.LookRotation (door.transform, cam.transform);

        while (tPos <= 1.0f || tRot <= 1.0f) {
            tPos += stepPos;
            tRot += stepRot;

            transform.position = Vector3.Lerp (aPos,bPos,tPos);
            transform.rotation = Quaternion.Euler(Vector3.Lerp (aRot, bRot, tRot));

            yield return new WaitForFixedUpdate();
        }

I ended up figuring it out, just make sure to put a boolean in MouseLook.cs to stop the player from moving it via axis.
I locked the lerp stepping to the movement so it would all happen at the same time.

while (tPos <= 1.0f) {
            //increment position
            Vector3 aPos = transform.position;
            Vector3 bPos = LastDoor.transform.position + LastDoor.transform.forward * -1.5f;
            float stepPos = (moveSpeed / (aPos - bPos).magnitude) * Time.fixedDeltaTime;
            tPos += stepPos;

            //Set the camera to the door.
            transform.localRotation = Quaternion.Slerp (transform.rotation, LastDoor.transform.rotation, tPos);
            Quaternion m_CameraTargetRot = Quaternion.Euler (transform.localRotation.x, 0f, 0f);
            cam.transform.localRotation = Quaternion.Slerp (cam.transform.localRotation, m_CameraTargetRot , tPos);
            transform.position = Vector3.Lerp (aPos,bPos,tPos);

            yield return new WaitForFixedUpdate();
        }