import sys
#with open auth.routes.js as f
with open('auth.routes.js', 'r', encoding='utf-8') as f:
    c = f.read()

target = """        req.session.userId = user.id;
 start_idx = c.find( target )
if start_idx == -1:
    print("ERROR: target not found")
    sys.exit(1)

end_idx = c.find("res.json", start_idx)
if end_idx == -1:
    print("ERROR: res.json not found")
    sys.exit(1)
replacement = """        req.session.userId = user.id;
        req.session.email = user.email;
        req.session.role = user.role;
        req.session.parentId = user.parent_id;

        req.session.save((err) => {